new与delete的重载
非法delete问题
delete*2问题
“自由存储区可能会被破坏”
———《C+P》
delete[](new[]+1)问题
cplusplus.com上说:
- delete[]的参数ptr,应该是new[]返回的ptr
- 如果delete的参数ptr无效,将产生未定义的结果
A *a = new B[2];delete []a;
经过测试,也是未定义的。
总结
这应该牵扯到C++堆内存管理问题,以上行为都将产生未定义结果,特别的,第二种情况下程序直接崩溃的可能性巨大。
new[] delete[] 顺序问题
先构后析
delete基本类型数组
delete和delete[]作用是相同的,都没有问题。主要因素是基本数据类型不需要调用析构函数。