1、delete是用于释放申请的内存,对于内部数据类型,其delete 和 delete []的效果一样,没有什么区别,如下:
- int main()
- {
- int *p = new int;
- delete p; //delete []p 两种方式都可以
- return 0;
- }
或
- int main()
- {
- int *p = new int[10];
- delete p; //delete []p 两种方式都可以
- return 0;
- }
2、对于非内部数据,在使用delete释放内存空间时,必须严格区分数组内存释放和单个对象内存释放,即此时的delete p和delete []p并不能随便使用。
- class Base
- {
- public:
- int value;
- };
- int main()
- {
- Base *p = new Base[10];
- delete []p; //不能写成delete p
- return 0;
- }
虽然写成注释后面的情况,在VC编译器下并不会报错,但是最后并不是释放所有数组的内存,而只释放了一个元素的。
阅读(646) | 评论(0) | 转发(0) |