首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++程序终止时的内存返回

C++程序终止时的内存返回
EN

Stack Overflow用户
提问于 2011-09-24 01:10:51
回答 4查看 408关注 0票数 2

当C++程序终止时,运行期间使用的内存将被清理并返回到系统,对吗?

问题1)返回的内存是由C++语言功能管理的还是由计算机硬件本身管理的?

问题2)如果我在Unix终端中使用ctrl+Z终止一次运行,内存是否会得到有效/安全的返回?

EN

回答 4

Stack Overflow用户

发布于 2011-09-24 01:16:36

  1. 通常两者都有。至少在假定正常终止的情况下,析构函数将运行,这通常会释放与这些对象关联的内存。一旦你的程序退出,操作系统将释放该进程所拥有的所有内存。
  2. 强制终止通常不会运行析构函数等,但任何合理的操作系统都会在进程终止后进行清理,无论它是否干净地这样做。但是有一些限制,所以如果你使用过像锁文件这样的东西,它可能无法清理这些文件。
票数 5
EN

Stack Overflow用户

发布于 2011-09-24 01:15:36

Q:当C++程序终止时,运行期间使用的内存将被清理并返回系统,对吗?

答:正确。对于任何程序都是如此,无论它是用哪种语言编写的,也不管它是Linux、Windows还是其他操作系统

Q返回的内存是由C++语言功能管理的,还是由计算机硬件本身管理的?

答:都不是:操作系统负责管理进程的内存。

问:如果我在Unix终端中使用ctrl+Z终止一次运行,内存是否会得到有效/安全的返回?

答:释放操作系统资源(如内存)。但是,如果你粗鲁地杀死了一个程序,你可能会留下文件被破坏,IPC被锁定,以及操作系统无法控制的其他坏事。

“希望这能有所帮助。

票数 3
EN

Stack Overflow用户

发布于 2011-09-24 01:14:53

返回的内存是由C++语言功能管理的还是由计算机硬件本身管理的?

这两种情况都会发生,前提是适当的关闭(vs.崩溃或终止)。标准C/C++库释放它通过操作系统系统调用分配的任何(非泄漏的)内存,并最终由操作系统清理所有泄漏的内存。

如果我在

终端中使用ctrl+Z终止一次运行,内存是否会得到有效/安全的返回?

Ctrl-Z可挂起Unix上的进程。如果您使用kill或kill -9终止它,则操作系统将(安全/有效地)回收内存。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7532529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档