1

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

它在 Ubuntu Linux 14 中运行。

4

3 回答 3

9

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

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

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

于 2013-06-11T16:23:06.490 回答
2

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

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

于 2013-06-11T16:26:32.787 回答
1

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

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

于 2013-06-11T16:26:19.780 回答