C++ 理解Malloc实现

C++ 理解Malloc实现,c++,memory,operating-system,malloc,C++,Memory,Operating System,Malloc,如果我在退出程序后没有使用malloc释放分配的内存,内存是否仍保持分配状态 它运行在UbuntuLinux14上。从理论上讲,它是特定于平台的,但当进程退出时,系统很可能会回收所有内存和其他由进程分配的资源 所以,不,在程序退出后,内存可能不会保持分配状态。但是请注意,如果您的程序长时间运行并泄漏内存,则其内存需求可能会非常高。您应该尽合理的努力避免内存泄漏,而不应该仅仅依靠系统(最终)为您清理 编辑:更新后的问题说明您正在Linux上运行。Linux将在程序退出时清理进程分配的资源。理论上讲

如果我在退出程序后没有使用
malloc
释放分配的内存,内存是否仍保持分配状态


它运行在UbuntuLinux14上。

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

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


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

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

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


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

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


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

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


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

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


这就是我们所说的物理记忆。虚拟内存属于进程,因此根本不需要回收。它根本就不存在了。

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

这就是我们所说的物理记忆。虚拟内存属于进程,因此根本不需要回收。它已经不存在了。

大多数操作系统都支持各种特殊功能来分配与进程自身生命周期无关的资源。除此之外,任何半途而废的操作系统都会在进程退出时从进程中回收所有内存。大多数操作系统都支持各种特殊功能来分配与进程自身生命周期无关的资源。除此之外,任何半途而废的操作系统都会在进程退出时从进程中回收所有内存。