我可以看到,如果我们在c ++中动态分配内存,但是没有正确管理它,我们可以拥有垃圾内存,而且我们基本上可以获得内存泄漏,很明显为什么会发生这种情况。因为,例如,如果我们有一个指向内存地址的指针,并且我们在释放当前地址之前将此指针分配给另一个地址空间,那么这是一个问题。但我不明白的是,让我们说我们有一个糟糕的程序,不断添加垃圾内存,但是当我们关闭程序时,一切都恢复正常。例如,如果我们有一个用c ++程序引入的垃圾内存,那么没有更多指针指向该垃圾内存,关闭程序后,如何释放所有垃圾内存?程序在程序关闭之前如何知道如何清理垃圾内存?
答案 0 :(得分:3)
没有垃圾内存,不是你的程序分配和释放内存。它的底层操作系统。您正在使用其服务在操作系统之上工作。堆内存和免费存储只是这些服务提供的抽象(在其他抽象中这样的文件,“我是在这个独特的CPU中运行的唯一进程”等)
答案 1 :(得分:1)
在Windows操作系统上,操作系统会清除进程分配的所有内存。因此,它基本上抛弃了给予流程的空间而不关心它包含的内容。