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

为什么这样没有内存泄露解决方法

2012-02-24 
为什么这样没有内存泄露学c++的都知道,用new创建一个数组的时候,记得用delete[]来删除,否则的话会造成内存

为什么这样没有内存泄露
学c++的都知道,用new创建一个数组的时候,记得用delete[]来删除,否则的话会造成内存泄露。
今天做了一个测试发现的结果确不是这样的,我用的开发工具是VS2005
int   *p   =   new   int[10];
int   *head   =   p;   //record   the   address   of   this   array
for   (int   i   =   0;   i <5;   i++)
{
*p   =   i;
p++;
}

delete   head;   //replace   delete[]   head;
我用vs自带的工具memory观察了内存分配过程,以及释放过程,发现居然不是我想象的只释放第一个数据对象*head,而是整个数组空间都被释放了。

为了确认,我还用DoundsChecker   检查了一遍,没内存泄露。

请问这是什么原因?还是microsoft在vs2005做的优化处理?

[解决办法]
int *p = new int[10];
换成string * p = new string[10];
再试试
[解决办法]
delete head; //replace delete[] head;
这个没带[] 有可能导致泄露
有些时候你申请他还是可以释放干净的

[解决办法]
为什么该有内存泄漏?你内存不是已经释放了么?delete[]和delete对简单类型是一样得

热点排行