OS是否在C中的应用程序退出时回收内存?

时间:2012-04-03 01:48:52

标签: c memory-management

  

可能重复:
  When you exit a C application, is the malloc-ed memory automatically freed?

几乎是标题。 (现代)操作系统是否在程序终止时自动回收堆分配的内存?如果是这样的话,那就是释放严格必须或更多的只是跟随该死的标准你傻瓜有点什么?

如果我没有明确释放内存,除非我最终在应用程序运行时浪费它,最糟糕的事情是什么?

5 个答案:

答案 0 :(得分:2)

如果应用程序终止操作系统将清理内存和资源。 如果你不使用free()清理内存,那么随着你的请求越来越多,堆分配的内存将被用尽。如果它继续,os将开始使用swap / page文件进行分配。它仍然继续操作系统将停止,或终止应用程序出现某种错误

答案 1 :(得分:2)

OS是否在C中的应用程序退出时回收内存? Yes.

如果您没有释放内存:您的应用程序可能会耗尽内存和崩溃。

答案 2 :(得分:2)

当应用程序终止时,操作系统将回收所有内存。人们传播内存管理技术的原因是因为只要应用程序正在运行,它所要求的任何内存都将保留在其位置(即使它不再被使用)。当然,除非你足够好打电话给free

答案 3 :(得分:2)

退出前释放内存是可选的,因为o / s会为你清理。

在跑步时释放未使用的内存是个好主意;它可以防止应用程序耗尽内存(并且必须退出)。困难通常是找出哪些内存未被使用。

答案 4 :(得分:2)

是。但是如果你的程序是一个长期运行的程序,你最终不仅会崩溃程序,而且随着时间的推移,你也会放慢系统速度,假设你使用了太多的内存。