我有一個我在Linux中開發的C++應用程序。我正在分配一些動態內存並最終調用forkpty()。子進程正在調用execl(),正如我們所知,如果execcl()成功執行該命令,它將永遠不會返回。此外,正如我們所知,forkpty()複製了所有父級的數據。因此,如果child()進程永遠不會將控制權返回給我的應用程序以便最終執行內存清除,那麼可以安全地說,從子進程調用execl()時最好沒有分配任何動態內存? ?我無法相信我在這裏找不到這個......先謝謝了。forkpty()和execl()的子進程的堆內存管理?
0
A
回答
1
分配的內存是過程映像的一部分;當您撥打 execl
時,整個過程映像將被替換,並且其中的任何內存都會像其餘部分一樣「簡單消失」,然後返回到操作系統 ,然後該操作系統將在其他地方使用該操作系統。
1
作爲execl()
(如果調用成功)的一部分,所有「分叉」進程內存被釋放。
如果情況並非如此,那麼在普通的linux系統中將會出現大量內存泄漏,因爲幾乎不可能在沒有分配內存的情況下寫入任何內容,例如,如果參數到execl()
被分配,您在撥打execl()
之前不可能釋放它們。
相關問題
- 1. 內存管理和進程
- 2. 跨進程內存管理
- 3. C++指針和堆棧內存管理
- 4. 內存管理,堆損壞和C++
- 5. 堆碎片和Windows內存管理器
- 6. 在由execl調用的子進程中寫入管道
- 7. android以外的堆內存管理
- 8. 跨DLL的內存/堆管理
- 9. Python的子進程管理
- 10. Java線程堆棧內存分配和管理
- 11. 進程和子進程信息(內存)
- 12. 進程內存管理查詢
- 13. 與Java內存管理(堆棧和堆)混淆
- 14. 進程內存vs堆 - JVM
- 15. 運行連續的Python進程和內存管理
- 16. WPF應用程序中的內存管理和性能改進
- 17. 進程虛擬內存 - 堆棧和堆之間的空間
- 18. C程序的堆棧和堆內存
- 19. 如何有效地管理Android應用程序的內存(堆)
- 20. C或C++堆內存管理實現
- 21. 使用UIPageControl和子ViewControllers進行內存管理
- 22. JavaScript中的堆和本機內存分配:如何管理?
- 23. C++內存管理與堆分配和幀分配的區別
- 24. 用於運行進程的堆內存
- 25. 紅寶石使用堆棧進行內存管理嗎?
- 26. Linux內核進程管理
- 27. C - 使用管道,選擇,分叉和execl創建進程樹
- 28. 的Windows堆管理器和堆段
- 29. OpenSSL錯誤和linux進程內存管理
- 30. Linux ptrace內存讀取和進程管理
[在exec()更改程序映像之後malloc的內存會發生什麼變化?](http://stackoverflow.com/questions/5429141/what-happens-to-malloced-memory-after-exec -changes最節目圖像) – 2013-04-04 13:39:26