2014-03-19 45 views
-2

所以我想知道在函數中使用的內存會發生什麼。我正在編寫一個多線程程序,我想知道如果我在返回後調用函數及其內存會發生什麼。在函數中分配的內存會發生什麼?

+0

我真的不明白你的問題,你能不能請解釋更多? – Maroun

+1

請清除您的問題。發佈您的代碼並列出您的問題。以便我們能夠幫助你。 http://stackoverflow.com/questions/how-to-ask –

+1

http://en.wikipedia.org/wiki/Automatic_variable&https://en.wikipedia.org/wiki/Stack-based_memory_allocation –

回答

4

「自動」存儲 - 您直接聲明而不是從堆中顯式分配的變量 - 從堆棧中獲得,並且在函數退出時基本消失。

任何你明確malloc()必須最終明確地free()d,一次也是唯一一次。這是你的責任,結構代碼,以便正確地發生。如果在函數退出後不打算使用它,則應在函數退出之前將其釋放。如果它是更大數據結構的一部分,或者返回給調用者,則需要設計程序以瞭解這一點,並在不再需要該內存塊時自行清理。

如果你分配,你必須自由 - 或者必須清楚地記錄誰來完成它的內存釋放的責任。

(注意,這是從Java和其他「垃圾收集」的語言,在那裏,但是還沒有積極地使用它的內存是自動恢復非常不同。)

相關問題