首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

用delete p代替delete [] p释放new 分配的数组,真的会泄漏内存么?该怎么解决

2012-03-27 
用delete p代替delete [] p释放new 分配的数组,真的会泄漏内存么?实际测试如下:int*anewint[5]a[0]0a[

用delete p代替delete [] p释放new 分配的数组,真的会泄漏内存么?
实际测试如下:
int   *a=new   int[5];
a[0]=0;a[1]=1;
int   *p1=&a[1];
delete   a;
cout   < <   *p1   < <   endl;
//这里*p1输出的结果是释放后的内存,而不是1

int   (*aa)[5]=new   int[5][5];
aa[0][0]=0;aa[4][4]=5;
int   *p2=&aa[4][4];
delete   aa;
cout   < <   *p2   < <endl;
//这里*p2输出的结果也是释放后的内存,不是5,就是说跟维数没有关系

本人用的vc++   6.0,微软的编译器。

但是网络上几乎所有人都说delete   p会造成内存泄漏,这是为什么???难道跟编译器有关?还是我测试的方法不对?

[解决办法]
基本类型不会内存泄露,

但如果是对象的话,只会调用一个对象的析构函数,但内存是释放了。
析构函数没有调用可能引起内存泄露
[解决办法]
【quote】
基本类型不会内存泄露,

但如果是对象的话,只会调用一个对象的析构函数,但内存是释放了。
析构函数没有调用可能引起内存泄露
【/quote】


热点排行