2013-06-11 49 views
1

即使在退出程序後,如果我沒有使用malloc釋放分配的內存,內存是否仍保留分配?瞭解Malloc實施

它在Ubuntu Linux操作系統14

+0

大多數操作系統* do *支持各種特殊功能來分配資源,這些資源不會被綁定到進程本身的生命週期中。除此之外,任何半途而廢的操作系統都會在進程退出時從進程中回收所有內存。 –

回答

9

運行在理論上它的平臺特定但機會是,該系統將回收所有的內存和一個進程分配退出時其他資源。

因此,不,內存可能不會在程序退出後繼續分配。但是請注意,如果您的程序長時間運行並泄漏內存,則其內存要求可能會非常高。你應該做出合理的努力來避免內存泄漏,而不應該僅僅依賴系統(最終)爲你清理東西。

編輯:您更新的問題表明您正在Linux上運行。當你的程序退出時,Linux會清理你的進程分配的資源。

1

這取決於系統,但很有可能在程序停止後存儲器可用。

在linux上,malloc將返回一個虛擬內存地址,但不會使用物理內存,直到您真正在其上寫入內容爲止。

2

這與C++或任何其他語言無關。這是一個關於操作系統的問題。您正在運行的進程正在使用資源(在這種情況下爲內存)。退出時,操作系統將其取回,以便將其交給其他進程。

這是我們正在談論的物理記憶。虛擬內存屬於這個過程,所以根本沒有任何可回收的東西。它根本不存在了。