pthread_create内存泄漏

dom*_*lao 2 c linux

我使用C语言和Linux作为我的编程平台.

在我的应用程序中,我调用pthread_create.然后我使用ps命令行工具检查我的应用程序的内存使用情况,并在VSZ列中添加4.

但问题是当pthread_create函数处理程序退出时,内存中添加的4不是释放.然后,当应用程序再次调用pthread_create时,再次添加4值,直到它变大.

我试过pthread_join,似乎内存仍在变大.

谢谢.

Art*_*ius 9

ps不是测量内存泄漏的正确工具.当你释放内存时,你不能保证减少进程'vsize,这是由于内存碎片和避免不必要的系统调用.

valgrind 是一个更好的工具使用.


Dav*_*har 6

您应该在每个创建的pthread上使用pthread_detach或pthread_join(但不能同时使用两者).pthread_join等待线程完成; pthread_detach表示您不打算等待它(因此实现可以在终止时回收与该线程关联的存储).

同样,Artelius所说的ps不是诊断内存泄漏的正确工具.