当前位置:  开发笔记 > 编程语言 > 正文

必须新的一直跟着删除?

如何解决《必须新的一直跟着删除?》经验,为你挑选了3个好方法。

我认为在重新分配动态分配的指针时,我们都理解删除的必要性,以防止内存泄漏.但是,我很好奇,C++在多大程度上强制要求使用delete?例如,采取以下计划

int main()
{
     int* arr = new int[5];
     return 0;
}

虽然所有意图和目的都没有发生泄漏(因为你的程序结束了,操作系统会在它返回后清理所有内存),但标准是否还需要 - 或建议 - 在这种情况下使用delete [] ?如果没有,还有其他原因你会在这里删除[]吗?



1> Reed Copsey..:

没有什么需要在标准中删除[]但是,我会说这是一个非常好的指导方针.

但是,最好在每次新的或新的[]操作中使用delete或delete [],即使程序终止也会清除内存.

许多自定义对象都有一个析构函数,它可以执行其他逻辑,而不仅仅是清理内存.使用delete可以保证在这些情况下的销毁.

此外,如果您在常规中移动,则不太可能在代码中的其他位置导致内存泄漏.



2> Brian Campbe..:

Dupe of 有没有理由在程序退出时用C++调用delete?

答案是,由于需要运行的析构函数,有时需要在退出程序之前删除该对象.此外,如果您不这样做,许多内存泄漏检测工具会抱怨,因此为了更容易找到真正的内存泄漏,您应该在退出之前尝试删除所有对象.



3> Mitch Wheat..:

请参阅:

何时使用"new"和何时不使用,在C++中?

关于C++中用于自定义对象的构造函数/析构函数和new/delete运算符

在Visual C++中删除和删除[]相同?

为什么有一个特殊的new和删除数组?

如何在C++中跟踪内存分配(尤其是新建/删除)

结构数组和新/删除

new/delete和malloc/free有什么区别?

推荐阅读
k78283381
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有