可能重复:
When you exit a C application, is the malloc-ed memory automatically freed?
几乎是标题。 (现代)操作系统是否在程序终止时自动回收堆分配的内存?如果是这样的话,那就是释放严格必须或更多的只是跟随该死的标准你傻瓜有点什么?
如果我没有明确释放内存,除非我最终在应用程序运行时浪费它,最糟糕的事情是什么?
答案 0 :(得分:2)
如果应用程序终止操作系统将清理内存和资源。 如果你不使用free()清理内存,那么随着你的请求越来越多,堆分配的内存将被用尽。如果它继续,os将开始使用swap / page文件进行分配。它仍然继续操作系统将停止,或终止应用程序出现某种错误
答案 1 :(得分:2)
OS是否在C中的应用程序退出时回收内存? Yes.
如果您没有释放内存:您的应用程序可能会耗尽内存和崩溃。
答案 2 :(得分:2)
当应用程序终止时,操作系统将回收所有内存。人们传播内存管理技术的原因是因为只要应用程序正在运行,它所要求的任何内存都将保留在其位置(即使它不再被使用)。当然,除非你足够好打电话给free
。
答案 3 :(得分:2)
退出前释放内存是可选的,因为o / s会为你清理。
在跑步时释放未使用的内存是个好主意;它可以防止应用程序耗尽内存(并且必须退出)。困难通常是找出哪些内存未被使用。
答案 4 :(得分:2)
是。但是如果你的程序是一个长期运行的程序,你最终不仅会崩溃程序,而且随着时间的推移,你也会放慢系统速度,假设你使用了太多的内存。