2013-06-11 52 views
1

即使在退出程序后,如果我没有使用malloc释放分配的内存,内存是否仍保留分配?了解Malloc实施

它在Ubuntu Linux操作系统14

+0

大多数操作系统* do *支持各种特殊功能来分配资源,这些资源不会被绑定到进程本身的生命周期中。除此之外,任何半途而废的操作系统都会在进程退出时从进程中回收所有内存。 –

回答

9

运行在理论上它的平台特定但机会是,该系统将回收所有的内存和一个进程分配退出时其他资源。

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

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

1

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

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

2

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

这是我们正在谈论的物理记忆。虚拟内存属于这个过程,所以根本没有任何可回收的东西。它根本不存在了。