【问题标题】:Understanding Malloc implementation [duplicate]了解 Malloc 的实现 [重复]
【发布时间】:2013-06-07 14:16:03
【问题描述】:

如果我没有使用malloc 释放分配的内存,即使在退出程序后,内存是否仍然分配?

它在 Ubuntu Linux 14 中运行。

【问题讨论】:

  • 大多数操作系统确实支持各种特殊功能来分配不/不会绑定到进程自身生命周期的资源。除此之外,任何中途胜任的操作系统都会在进程退出时从进程中回收所有内存。

标签: c++ memory operating-system malloc


【解决方案1】:

理论上它是特定于平台的,但系统可能会在进程退出时回收进程分配的所有内存和其他资源。

所以,不,在您的程序退出后,内存可能不会保持分配状态。但是请注意,如果您的程序长时间运行并泄漏内存,则其内存需求可能会变得非常高。你应该做出合理的努力来避免内存泄漏,而不应该仅仅依赖系统(最终)为你清理东西。

编辑:您更新的问题表明您正在 Linux 上运行。当你的程序退出时,Linux 会清理你的进程分配的资源。

【讨论】:

    【解决方案2】:

    这与 C++ 或任何其他语言无关。这是一个关于操作系统的问题。您正在运行的进程正在使用资源(在本例中为内存)。退出后,操作系统将其取回,以便将其提供给其他进程。

    这是我们正在谈论的物理内存。虚拟内存属于进程,所以根本没有什么可回收的。它根本不存在了。

    【讨论】:

      【解决方案3】:

      这取决于系统,但很可能在程序停止后内存可用。

      在 linux 上,malloc 会返回一个虚拟内存地址,但不会使用物理内存,直到您实际在其上写入内容。

      【讨论】:

        猜你喜欢
        • 2020-12-15
        • 2015-11-30
        • 1970-01-01
        • 2018-08-19
        • 2016-10-31
        • 2014-03-14
        • 2023-03-24
        • 1970-01-01
        • 2011-07-22
        相关资源
        最近更新 更多