Q
正在釋放線程內存
1
A
回答
2
線程的本地存儲來自堆棧,因此您不需要釋放它。只是結束線程沒問題。
而動態存儲是來自堆,所以你必須釋放分配的內存。
0
請記住 - 還有"thread local storage"(又名「TLS」)。這獨立於堆存儲(「new」或「malloc()」)或局部變量。像堆存儲一樣,您的應用程序將顯式分配TLS並明確釋放它。
0
嗯,這取決於。如果線程已分離,則在線程結束時不需要清理線程的資源。如果線程沒有分離,你可以調用(我不確定Solaris的細節)需要調用pthread_join或類似的東西來清理線程的資源。當然,你需要清理TLS和動態存儲。
0
線程爲堆棧中的函數數據或特殊的TLS(線程本地存儲)分配線程本地全局變量的本地存儲。堆上線程分配的任何東西一直保留,直到顯式釋放()d。
相關問題
- 1. 線程不釋放內存
- 2. 跨線程釋放內存
- 3. 線程中的Perl內存泄漏(線程不釋放內存)
- 4. DLL注入,線程和內存釋放
- 5. 我正在釋放內存兩次 - C++
- 6. 正在釋放共享內存
- 7. 正在釋放java.util.LinkedList $條目內存
- 8. 問題,在正確釋放內存
- 9. 釋放內存
- 10. 釋放內存
- 11. Java在釋放線程時泄漏堆內存
- 12. 無法在其他線程的堆棧上釋放內存
- 13. 在Delphi7的不同線程中分配和釋放內存
- 14. 在Delphi的線程中,何時釋放內存?
- 15. 如何釋放線程本地存儲的堆內存
- 16. Tcl - 在程序中間釋放內存
- 17. 如何在iOS中正確釋放內存:內存永遠不會釋放;內存潛在泄漏指向
- 18. 執行程序創建的線程池是否釋放內存?
- 19. 從內存中釋放UIWebView內容,強制應用程序釋放內存
- 20. 我需要釋放內存的應用程序正在構建
- 21. Assert釋放內存在C++
- 22. c - 正確釋放結構的內存
- 23. 內存未被正確釋放?
- 24. Alea的犯規釋放內存正確
- 25. 無法正確釋放內存
- 26. 我是否正確釋放內存?
- 27. 正確的釋放內存的方法
- 28. ç釋放內存
- 29. 釋放ScrollView內存
- 30. QList內存釋放
你能提供一個參考來支持這個答案嗎? – Arafangion
請參見[pthread_join](http://pubs.opengroup.org/onlinepubs/000095399/functions/pthread_join.html),特別是理論部分第2段,其中說:「線程終止後,應用程序可以選擇清理資源...例如,在pthread_join()返回後,任何應用程序提供的堆棧存儲都可以被回收。「在特定實現上測試這種方法的一種方法是啓動一堆處於非分離狀態的線程,並查看它們使用的內存資源類型。用分離的線程重複。如果使用情況有所不同,我想這很重要。 – ldav1s
@ Idav1s:有趣 - 這與我在Mac上看到的不同,顯然需要重新讀取Solaris上的所有這些文檔。 – Arafangion