我想知道我是否新建一些对象但忘记删除它,当进程退出时,泄漏的内存是否会返回给操作系统?
答案 0 :(得分:7)
这不是一个C ++问题,而是一个操作系统问题。
我所知道的所有操作系统都将回收已分配的常规内存。这是因为分配通常来自进程私有地址空间,将在退出时回收。
对于共享内存等其他资源,情况可能并非如此。有些实现将不发布共享内存段,除非您在进程退出之前专门将其标记为删除(即使这样,在每个人都分离之前它们也不会被删除)。
答案 1 :(得分:1)
对于大多数现代操作系统(大多数unix和在x86下受保护的内存中运行的任何东西),内存分配发生在程序的堆中(通过malloc for C或new / delete for C ++)。因此,当程序退出时,内存将被释放以供其他地方使用。