Memory 分离的pthread_create()泄漏内存

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

我正在Linux环境中用C开发一个应用程序。我注意到,以下代码仅在执行数百次后就泄漏了大量内存:

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:

这就是我初始化属性并启动线程“分离”的原因。我还破坏了属性。 我不能使用pthread_join(),因为我不需要阻塞调用,我希望我的线程能够独立运行

不幸的是,泄漏仍然存在。我没有更多的想法,我会得到更多的建议

谢谢大家!


@arrowdodger:调用pthread_detach()而不设置任何类型的属性也会泄漏。 我还尝试了setdetach和pthread_detach(),但没有成功


@Hirsch博士:我知道它会泄漏,因为当我让它运行1天时,我会出现“内存不足”的内核恐慌。此外,使用top,我可以看到越来越多的专门用于我的进程的备忘录(但我知道最好的方法是使用valgrind)。

我从您的链接中了解到,您应该调用pthread_detach(),而不是使用DETACHED属性创建它。

您如何知道此代码泄漏内存?