为什么这样没有内存泄露
学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做的优化处理?