读书人

用delete p代替delete [] p释放new 分

发布时间: 2012-03-27 13:44:24 作者: rapoo

用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】


读书人网 >C语言

热点推荐