我知道當我在Linux中調用exec()
系統調用之一時,它將用新映像替換當前正在運行的進程。因此,當我分叉一個新流程並運行exec()
時,孩子將被替換爲新流程。exec()更改程序映像後,malloc會出現什麼情況?
從堆中分配的任何內存會發生什麼?假設我想解析任意數量的命令並將其發送到exec()
。爲了保持這個任意數字,我可能不得不在一定程度上分配內存,因爲我認爲我無法正確使用靜態大小的數組,所以我可能會使用malloc()
或其他等價物。
我需要保持這個內存分配,直到我叫exec()
,但exec()
永遠不會返回。
內存是否被操作系統回收?
順便說一句,這是一個非常類似的問題http://stackoverflow.com/questions/3617332/what-happens-with-memory-usage-after-exec – sharptooth 2011-03-25 08:01:45