2012-04-03 147 views
3

可能重複:
When you exit a C application, is the malloc-ed memory automatically freed?操作系統回收內存應用程序退出在C?

差不多稱號。做(現代)操作系統在程序終止時自動回收堆分配內存?如果是的話,是釋放內存一個嚴格必須或更多的一個剛剛按照該死的標準你傻瓜有點兒東西?

如果我沒有明確地釋放內存,除了在應用程序運行時最終浪費它,最糟糕的事情是什麼?

+1

@JonathonReinhart對不起,我沒有找到這個問題。我也親自投票:D – GradGuy 2012-04-03 01:54:37

回答

2

當應用程序終止時,操作系統將回收所有內存。人們傳播內存管理技術的原因是,只要應用程序運行的是,它所要求的任何內存都將保持其佔位(即使它不再被使用)。當然,除非你打電話給free

2

如果應用程序終止os將清理內存和資源。 如果你沒有用free()清理內存,那麼隨着你請求越來越多,堆分配的內存將被用完。如果它繼續,os將開始使用swap/page文件進行分配。它仍然繼續操作系統將停下來,或終止與某種錯誤的應用程序

2

操作系統回收內存應用程序退出C? Yes.

如果您沒有釋放內存:您的應用程序可能會用盡內存&崩潰。

2

退出前釋放內存是可選的,因爲O/S將爲您清理。

運行時釋放未使用的內存是個好主意;它可以防止應用程序耗盡內存(並且不得不退出)。困難在於找出哪些內存未被使用。

2

是的。但是如果你的程序是一個長時間運行的程序,那麼最終不僅會使你的程序崩潰,而且隨着時間的推移,假如你使用的內存太多,你也會放慢系統的運行速度。