page contents

delete与delete 有什么区别?

轩辕小不懂 发布于 2022-01-08 10:47
阅读 510
收藏 0
分类:C/C++开发
2842
Nen
Nen
- 程序员

对于简单类型来说,使用new分配后,不管是数组数组还是非数组形式,两种方式都可以释放内存:

int *a = new int(1);

delete a;

int *b = new int(2);

delete [] b;

int *c = new int[11];

delete c;

int *d = new int[12];

delete [] d;

对于自定义类型来说,就需要对于单个对象使用delete,对于对象数组使用delete [],逐个调用数组中对象的析构函数,从而释放所有内存;
如果反过来使用,即对于单个对象使用delete [],对于对象数组使用delete,其行为是未定义的;

所以,最恰当的方式就是如果用了new,就用delete;如果用了new [],就用delete []。
请先 登录 后评论