malloc
如果即使退出程序后我也没有释放分配的内存,内存是否仍然分配?
它在 Ubuntu Linux 14 中运行。
从理论上讲,它是特定于平台的,但系统可能会在进程退出时回收进程分配的所有内存和其他资源。
所以,不,在您的程序退出后,内存可能不会保持分配状态。但是请注意,如果您的程序长时间运行并泄漏内存,则其内存需求可能会变得非常高。你应该做出合理的努力来避免内存泄漏,而不应该仅仅依靠系统(最终)为你清理东西。
编辑:您更新的问题表明您正在 Linux 上运行。当你的程序退出时,Linux 会清理你的进程分配的资源。
这与 C++ 或任何其他语言无关。这是一个关于操作系统的问题。您正在运行的进程正在使用资源(在这种情况下为内存)。退出后,操作系统将其取回,以便将其提供给其他进程。
这就是我们所说的物理内存。虚拟内存属于进程,所以根本没有什么可回收的。它根本不存在了。
这取决于系统,但很可能在程序停止后内存可用。
在 linux 上,malloc 将返回一个虚拟内存地址,但不会使用物理内存,直到您实际在其上写入内容。