Memory 分离的pthread_create()泄漏内存
我正在Linux环境中用C开发一个应用程序。我注意到,以下代码仅在执行数百次后就泄漏了大量内存:Memory 分离的pthread_create()泄漏内存,memory,memory-leaks,pthreads,Memory,Memory Leaks,Pthreads,我正在Linux环境中用C开发一个应用程序。我注意到,以下代码仅在执行数百次后就泄漏了大量内存: do { pthread_t flushThread; pthread_attr_t attr; logevent_thread_t logThread = { Db , &do_curl }; if (( pthread_attr_init ( &attr ) == 0 ) &&am
do {
pthread_t flushThread;
pthread_attr_t attr;
logevent_thread_t logThread = { Db , &do_curl };
if (( pthread_attr_init ( &attr ) == 0 ) &&
( pthread_attr_setdetachstate ( &attr , PTHREAD_CREATE_DETACHED ) == 0 ) ) {
pthread_create ( &flushThread , &attr , (void*)FlushThread , (void*)&logThread );
pthread_attr_destroy ( &attr );
}
} while(1);
当我开始编写代码时,我只使用了pthread_create(),但当我注意到漏洞时,我启动了google'd并搜索了StackOverflow,找到了以下URL:
@arrowdodger:调用pthread_detach()而不设置任何类型的属性也会泄漏。 我还尝试了setdetach和pthread_detach(),但没有成功
@Hirsch博士:我知道它会泄漏,因为当我让它运行1天时,我会出现“内存不足”的内核恐慌。此外,使用top,我可以看到越来越多的专门用于我的进程的备忘录(但我知道最好的方法是使用valgrind)。我从您的链接中了解到,您应该调用pthread_detach(),而不是使用DETACHED属性创建它。您如何知道此代码泄漏内存?