如果即使退出程序后我仍未使用malloc
释放分配的内存,内存是否仍然分配?
它在Ubuntu Linux 14中运行。
答案 0 :(得分:9)
理论上它的平台是特定的,但是系统可能会回收进程退出时分配的所有内存和其他资源。
所以,不,在您的程序退出后,内存可能不会保持分配状态。但请注意,如果程序运行时间过长并且内存泄漏,则其内存要求可能会变得非常高。你应该做出合理的努力来避免内存泄漏,不应该只依赖系统(最终)为你清理。
编辑:您更新的问题表明您正在Linux上运行。当你的程序退出时,Linux将清理你的进程分配的资源。
答案 1 :(得分:2)
这与C ++或任何其他语言无关。这是一个关于操作系统的问题。您正在运行的进程使用资源(在这种情况下为内存)。退出时,操作系统将其恢复,以便将其提供给其他进程。
这是我们正在谈论的物理记忆。虚拟内存属于该进程,因此根本无法回收。它根本就不存在了。
答案 2 :(得分:1)
这取决于系统,但很可能在程序停止后内存将可用。
在linux上,malloc将返回一个虚拟内存地址,但在你真正在其上写东西之前不会使用物理内存。