我被教導說,如果你做malloc(),但你沒有free(),內存將保持採取,直到重新啓動發生。那麼,我當然會測試它。一個非常簡單的代碼:C malloc和免費
#include <stdlib.h>
int main(void)
{
while (1) malloc(1000);
}
我觀察過它Task Manager(Windows 8.1)。
那麼,該程序佔用了2037.4 MB真的很快,並且就這樣堅持下去。我知道這可能是Windows限制程序。
但是這裏有個奇怪的部分:當我關閉控制檯時,儘管我被教導說它不應該這樣,但是內存使用率下降了。
調用free是多餘的,因爲操作系統將它釋放了嗎?
(超過here的問題是相關的,但並不完全回答我是否應該釋放與否。)
想象一下運行很久的程序---就像你的瀏覽器---並且使用大量的線程。如果每個線程每個網頁發生一兆字節的內存泄漏(例如),想象一下在一天之後會發生什麼。 你應該使用'free'。這是很好的做法。 – blazs
如果內存存在於進程的生命週期中,那麼是的OS會爲你做。但很少有記憶應該/需要在整個生命週期中生活。 – user3528438
http://stackoverflow.com/q/2215259/1606345 –