为什么分配的内存应该正确释放?

时间:2017-11-08 04:42:30

标签: c++ memory-leaks

我一直认为无论何时使用" new"初始化指针,该指定的内存总是会用于该指针,即使在应用程序编程终止之后也是如此。直到我发现应用程序关闭后操作系统显然已清除了内存,这让我有点困惑,因为如果是这样的话,为什么内存在游戏或其他应用程序中泄漏这样的问题如果应用程序关闭后会清除内存泄漏吗?

1 个答案:

答案 0 :(得分:2)

是的,当您终止它时,操作系统将释放您在程序中分配的所有内存。

但这个故事背后有两个重要因素。

  1. 如果您的程序分配内存并且它们被泄露,您实际上是在计算机内存中创建那些既不能被您的应用程序使用也不能被另一个并行运行的区域。如果你期望你的程序有很长的寿命,那就不好了。如果泄漏发生在长循环中,它可能会使整个系统窒息。

  2. 如果您的程序将成为某种单实例DLL(例如Windows进程内/进程外COM服务器),则整个系统都会出现问题。这是因为即使用户存在使用它的程序,操作系统也不会立即卸载DLL。

  3. 编写程序不仅仅是代码中逻辑的放置。它始终是准确有效地管理您的资源。资源总是有限的。