gpt4 book ai didi

c++ - 用 C++ 编写的进程导出处的堆内存和操作系统

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:16:19 24 4
gpt4 key购买 nike

我现在怀疑操作系统在进程生命周期方面的作用。我正在使用 Linux。

假设我有一个使用 new 在堆中创建一组对象的应用程序。在应用程序的生命周期中,我不需要删除任何这些对象,除非在退出应用程序时或在退出以进行清理之前发生异常。

假设我没有在应用程序结束时为所有这些对象调用 delete,操作系统通常会回收/释放所有分配的堆以使其在进程退出时再次可用吗?如果进程因为异常或调用 return 或 exit 而退出,是否总是会出现这种情况?

如果这是真的,这意味着如果我不调用 delete,将不会对操作系统或机器上运行的其他应用程序产生任何影响。对吧?

我通常使用 boost shared pointers 或使用 delete 但我只想在 OS/Linux 上下文中澄清这个疑问

亲切的问候AFG

最佳答案

没错。在保护模式操作系统上进程生命周期后的任何内存泄漏都是内核中一个非常讨厌的错误(有时进程崩溃)。

话虽如此,检查内存泄漏的最简单方法是确保堆在执行结束时的分配单元数与执行开始时的分配单元数完全相同。如果您在退出时没有delete,您将无法检查它并且永远不会发现合法的内存泄漏。

关于c++ - 用 C++ 编写的进程导出处的堆内存和操作系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4449310/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com