这是一个内存泄漏?,假设Foo()是一个带有默认构造函数的类
int main()
{
Foo * p = new Foo();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我认为这不是泄漏,因为应用程序在主要结束后立即结束,并且假设操作系统在完成后释放该应用程序的所有资源.这个假设是对的吗?
是的,在您的程序中,它是一个泄漏.你没有取消分配你的Foo.
你的操作系统会回收进程的内存吗?也许,也许不是.当然,Windows会重新使用内存.
但是,如果你只想为你的系统和你的系统想要一个通用的超实用答案,是的,你可能会侥幸逃脱.
但是,在任何情况下,您的操作系统都不会神奇地释放间接资源.Foo析构函数可能涉及的不仅仅是内存解除分配.
如果你想要一个C++答案,或者一个在代码完整性,智能设计(lol)和坦率的简单好习惯方面具有优点的答案,没有.当有人问他们扎实的实践原因,必须找到一个理由这样做delete,你可能很难时用力要提供的例子,如文件处理,网络连接和工作线程的理由.但是基本的常识要求所有这些问题都会自动得到解决,而不必单独命名每个问题,当你完成它们时,只需要花费5秒的时间来摧毁你的物体.
就是delete这样.你没有理由不去.
| 归档时间: |
|
| 查看次数: |
116 次 |
| 最近记录: |