Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C pthread_创建内存泄漏_C_Linux - Fatal编程技术网

C pthread_创建内存泄漏

C pthread_创建内存泄漏,c,linux,C,Linux,我使用C语言和Linux作为我的编程平台 在我的应用程序中,我调用pthread_create。然后我使用ps命令行工具检查我的应用程序的内存使用情况,它在VSZ列中添加了4 但问题是,当pthread_create函数处理程序退出时,内存中添加的4没有释放。然后,当应用程序再次调用pthread_create时,会再次添加一个4值,直到它变大 我尝试了pthread_join,但内存似乎还是越来越大 谢谢。ps不是测量内存泄漏的正确工具。释放内存时,由于内存碎片和避免不必要的系统调用,不能保证

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

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

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

我尝试了pthread_join,但内存似乎还是越来越大


谢谢。

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

valgrind
是一个更好的工具。

当你说
但问题是当pthread_create函数处理程序退出时

作为线程执行完成后退出的一部分,是否执行显式pthread_退出(NULL)?
另外,pthread_exit()例程不会关闭您可能在线程中打开的任何文件;即使在线程终止后,在线程内打开的任何文件仍将保持打开状态。

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


正如Artelius所说,ps不是诊断内存泄漏的正确工具。

似乎我不能使用valgrind,因为我的应用程序运行在嵌入式设备上。我认为你应该能够使用Purify工具对嵌入式代码执行同样的操作。是的,我在函数末尾调用pthread_exit(NULL)。我的pthread函数处理程序只是屏幕上的一个简单printf。3小时前同一个人提出的问题的副本。可能的副本