关于new分配内存使用后delete的问题

#include <iostream> #include <new> using namespace std; const int BUFF1=1024; const int BUFF2=5; int LEN[BUFF1]; int main() { int i,j; int* p1,*p2; p1=new int[BUFF2]; p2=new(LEN) int; for(i=0;i<BUFF2;i++) { p2[i]=p1[i]=1000+20*i; cout<<"值p1="<<p1[i]<<"\t"; cout<<"地址p1="<<&p1[i]<<"\t"; cout<<"值p2="<<p2[i]<<"\t"; cout<<"地址p2="<<&p2[i]<<endl; } delete[] p1; delete[] p2;//释放p2就报错了! return 0; }
p1是常规new分配内存。p2是指定一个int类型的内存地址,大小为1024的分配方式.
当释放p2的内存时,就报错了,请问为何不能delete 这个p2 ?如果不释放,会不会造成内存泄露?

普通人之所以普通,是因为他们普遍有一个通病,那就是认为自己永远普通。
千夫所指,我亦坚持。就算被所有人误解,我也照样守护这一切。
我们总是觉得,这些灵魂的表情,傲慢自大,目中无人,其实,真正目中无人的是我们。它们傲慢的不过是表情,而我们傲慢的却是行为!
记得,是为了忘记!
只要想着有那么一天,我就能忍受现在的每一天!
灾难并不可怕,可怕的是心中没有了希望。
你以为我在天堂,其实我正在路上。
当你觉得自己走不到终点的时候,请不要放弃。或许你的对手也是这种感觉。