当进程退出时,未删除的内存是否会返回到OS?

时间:2009-11-17 05:13:57

标签: memory-leaks operating-system

我想知道我是否新建一些对象但忘记删除它,当进程退出时,泄漏的内存是否会返回给操作系统?

2 个答案:

答案 0 :(得分:7)

这不是一个C ++问题,而是一个操作系统问题。

我所知道的所有操作系统都将回收已分配的常规内存。这是因为分配通常来自进程私有地址空间,将在退出时回收。

对于共享内存等其他资源,情况可能并非如此。有些实现将发布共享内存段,除非您在进程退出之前专门将其标记为删除(即使这样,在每个人都分离之前它们也不会被删除)。

答案 1 :(得分:1)

对于大多数现代操作系统(大多数unix和在x86下受保护的内存中运行的任何东西),内存分配发生在程序的堆中(通过malloc for C或new / delete for C ++)。因此,当程序退出时,内存将被释放以供其他地方使用。