可能重复:
当你在malloc之后没有释放时真的会发生什么?
在C/C++中结束程序时,必须通过释放指针来清理.如果你没有释放内存会发生什么,比如你有一个指向int的指针并且在结束程序时没有删除它?内存是否仍然使用,只能通过重新启动释放,还是在程序结束时自动释放?在最后一种情况下,为什么要释放它,如果操作系统为你做的话?
程序结束时,操作系统将回收所有内存(已释放或未释放).尽管如此,释放你分配的所有内容仍然是一种好习惯 - 主要是为了养成它的习惯,或者如果你扩展你的程序使它不会像以前那样结束.
程序结束时,操作系统将释放所有内存。
您应该自己释放它的原因是,内存是正在运行的程序中的有限资源。当然,在非常短的时间内运行简单的程序,释放内存失败不会产生明显的影响。但是,在长时间运行的程序中,无法释放内存意味着您将消耗有限的资源而不补充资源。最终它将耗尽,并且您的程序将无理地崩溃。这就是为什么您必须释放内存的原因。
在Windows,Linux或MacOS等桌面操作系统上,您的内存将被清理干净.
在某些实时或嵌入式操作系统上,它不会为您清理.
但是当你完成它时总是释放内存是个好主意 - 请记住,当你的程序运行时,所有内存仍在使用中.如果不释放它,机器的内存使用量将增加.
你必须要小心重构 - 比如说你开始编写一个main()分配一些内存的函数,你也不用费心去释放它,因为操作系统会为你做.但是,然后你将代码移动到一个在很长一段时间内被调用很多次的函数 - 突然间你有一个巨大的内存泄漏.