我认为在重新分配动态分配的指针时,我们都理解删除的必要性,以防止内存泄漏.但是,我很好奇,C++在多大程度上强制要求使用delete?例如,采取以下计划
int main()
{
int* arr = new int[5];
return 0;
}
Run Code Online (Sandbox Code Playgroud)
虽然所有意图和目的都没有发生泄漏(因为你的程序结束了,操作系统会在它返回后清理所有内存),但标准是否还需要 - 或建议 - 在这种情况下使用delete [] ?如果没有,还有其他原因你会在这里删除[]吗?
Ree*_*sey 12
没有什么需要在标准中删除[]但是,我会说这是一个非常好的指导方针.
但是,最好在每次新的或新的[]操作中使用delete或delete [],即使程序终止也会清除内存.
许多自定义对象都有一个析构函数,它可以执行其他逻辑,而不仅仅是清理内存.使用delete可以保证在这些情况下的销毁.
此外,如果您在常规中移动,则不太可能在代码中的其他位置导致内存泄漏.
Dupe of 有没有理由在程序退出时用C++调用delete?
答案是,由于需要运行的析构函数,有时需要在退出程序之前删除该对象.此外,如果您不这样做,许多内存泄漏检测工具会抱怨,因此为了更容易找到真正的内存泄漏,您应该在退出之前尝试删除所有对象.
| 归档时间: |
|
| 查看次数: |
8147 次 |
| 最近记录: |