Q
正在释放线程内存
1
A
回答
2
线程的本地存储来自堆栈,因此您不需要释放它。只是结束线程没问题。
而动态存储是来自堆,所以你必须释放分配的内存。
0
请记住 - 还有"thread local storage"(又名“TLS”)。这独立于堆存储(“new”或“malloc()”)或局部变量。像堆存储一样,您的应用程序将显式分配TLS并明确释放它。
0
嗯,这取决于。如果线程已分离,则在线程结束时不需要清理线程的资源。如果线程没有分离,你可以调用(我不确定Solaris的细节)需要调用pthread_join或类似的东西来清理线程的资源。当然,你需要清理TLS和动态存储。
0
线程为堆栈中的函数数据或特殊的TLS(线程本地存储)分配线程本地全局变量的本地存储。堆上线程分配的任何东西一直保留,直到显式释放()d。
相关问题
- 1. DLL注入,线程和内存释放
- 2. 正在释放java.util.LinkedList $条目内存
- 3. 我正在释放内存两次 - C++
- 4. 无法在其他线程的堆栈上释放内存
- 5. 如何释放线程本地存储的堆内存
- 6. 执行程序创建的线程池是否释放内存?
- 7. 从内存中释放UIWebView内容,强制应用程序释放内存
- 8. 我是否正确释放内存?
- 9. 内存未被正确释放?
- 10. Alea的犯规释放内存正确
- 11. 正确的释放内存的方法
- 12. 内存不释放
- 13. iPhone - 释放内存
- 14. 与释放内存
- 15. JNI释放内存
- 16. 内存不释放
- 17. Javascript内存释放
- 18. UINavigationViewController内存释放
- 19. Python释放线程
- 20. 即使我明确释放内存,内存也不会释放
- 21. window.URL.revokeObjectURL()不立即释放内存(或根本不释放内存)?
- 22. 跨线程的内存分配和释放
- 23. Ç - 内存分配和释放内存
- 24. C++ dtor释放_bstr_t内存
- 25. 使用后释放内存
- 26. 释放内存泄露ID2D1PathGeometry
- 27. PtrToStringChars,如何释放内存?
- 28. 释放分配的内存
- 29. 何时会释放内存?
- 30. 用std :: move()释放内存?
你能提供一个参考来支持这个答案吗? – Arafangion
请参见[pthread_join](http://pubs.opengroup.org/onlinepubs/000095399/functions/pthread_join.html),特别是理论部分第2段,其中说:“线程终止后,应用程序可以选择清理资源...例如,在pthread_join()返回后,任何应用程序提供的堆栈存储都可以被回收。“在特定实现上测试这种方法的一种方法是启动一堆处于非分离状态的线程,并查看它们使用的内存资源类型。用分离的线程重复。如果使用情况有所不同,我想这很重要。 – ldav1s
@ Idav1s:有趣 - 这与我在Mac上看到的不同,显然需要重新读取Solaris上的所有这些文档。 – Arafangion