怎样判断动态分配的内存区域已经完全被释放了?
怎样判断自己动态分配的内存区域已经完全被释放了?
比如:
int *p=new int[2];
delete p; //这段程序在vc++7.0中没有出错
怎样判断,这段int[2]内存区域被局部释放了还是被完全释放了?
==========================================================
我这样改了改,大概推断这里的delete p;完全等于delete []p;
int *p=new int[2];
p[0]=20;
p[1]=26;
delete p;
cout << "p[1]=" << p[1] << endl;
这时,p[1]的值不再是26,而是一个垃圾值,我就此推断p[1]的内存空间也被释放了,所以断定
delete pi;==delete []pi;
不知这样推断对不对,还是编译器优化的缘故。
===========================================================
顺便再问一下,就看这段代码,把delete p;改为delete []p;释放内存时,他怎样知道要释放两个int的区域而不是三个,难道这段区域的结尾有表示结束的标识符吗(就像字符串中的'\0')?