![]() |
#2
rjsp2016-05-27 08:55
|

#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;
}
#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 ?如果不释放,会不会造成内存泄露?