C++中的delete的机制是怎样的呢?
比如int *p = new int[100];
......
delete []p;
我觉得这种做法不太保险。比较保险的做法是
int *p = NULL; // 先进行初始化
p = new int[100];
......
if(NULL!=p) delete []p;
虽然这样写有点繁琐,但我认为是有道理的。因为不进行初始化,p的值是一个随机值,假如申请内存不成功,delete这一步肯定出错。但是我又想delete的机制的实质是怎样的呢?它能不能根据内存的所有权来判断是否收回内存呢?