理解Malloc实现



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

Ubuntu Linux 14

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

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

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

这与c++或任何其他语言无关。这是一个关于操作系统的问题。您正在运行的进程正在使用资源(在本例中是内存)。退出后,操作系统将其收回,以便将其交给其他进程。

我们讨论的是物理内存。虚拟内存属于进程,因此根本不需要回收任何内存。

这取决于系统,但最有可能的是,内存将在程序停止后可用。

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

相关内容

  • 没有找到相关文章