【发布时间】:2013-06-07 14:16:03
【问题描述】:
如果我没有使用malloc 释放分配的内存,即使在退出程序后,内存是否仍然分配?
它在 Ubuntu Linux 14 中运行。
【问题讨论】:
-
大多数操作系统确实支持各种特殊功能来分配不/不会绑定到进程自身生命周期的资源。除此之外,任何中途胜任的操作系统都会在进程退出时从进程中回收所有内存。
标签: c++ memory operating-system malloc
如果我没有使用malloc 释放分配的内存,即使在退出程序后,内存是否仍然分配?
它在 Ubuntu Linux 14 中运行。
【问题讨论】:
标签: c++ memory operating-system malloc
理论上它是特定于平台的,但系统可能会在进程退出时回收进程分配的所有内存和其他资源。
所以,不,在您的程序退出后,内存可能不会保持分配状态。但是请注意,如果您的程序长时间运行并泄漏内存,则其内存需求可能会变得非常高。你应该做出合理的努力来避免内存泄漏,而不应该仅仅依赖系统(最终)为你清理东西。
编辑:您更新的问题表明您正在 Linux 上运行。当你的程序退出时,Linux 会清理你的进程分配的资源。
【讨论】:
这与 C++ 或任何其他语言无关。这是一个关于操作系统的问题。您正在运行的进程正在使用资源(在本例中为内存)。退出后,操作系统将其取回,以便将其提供给其他进程。
这是我们正在谈论的物理内存。虚拟内存属于进程,所以根本没有什么可回收的。它根本不存在了。
【讨论】:
这取决于系统,但很可能在程序停止后内存可用。
在 linux 上,malloc 会返回一个虚拟内存地址,但不会使用物理内存,直到您实际在其上写入内容。
【讨论】: