分离线程的Valgrind内存泄漏

时间:2016-02-04 23:43:32

标签: c multithreading thread-safety pthreads posix

我正在以下列方式创建线程:

for (i = 0; i < NTHREADS; i++)
         Pthread_create(&tid, NULL, thread, NULL);

在线程中:

void *thread(void *vargp){
    Pthread_detach(pthread_self());
    //thread completes a job
 }

我正在创建这些分离的Pthreads。但是,Valgrind显示以下错误:

==38831== 2,240 bytes in 4 blocks are possibly lost in loss record 1 of 1
==38831==    at 0x4C2B974: calloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==38831==    by 0x4011DE4: _dl_allocate_tls (in /usr/lib64/ld-2.17.so)
==38831==    by 0x503F960: pthread_create@@GLIBC_2.2.5 (in /usr/lib64/libpthread-2.17.so)
==38831==    by 0x402BBD: main (server.c:54)

我在这里看到了一些关于同一问题的帖子,但是有人建议分离线程。我已经这样做了。这里的方法是我创建一个工作线程池(在第一个片段中)并使用它们来执行某些任务。但在此之前我打电话给Pthread_detach 这里有什么问题?

注意功能前的有效字母是有意的。这些是包含错误检查的包装器。没什么好看的。

0 个答案:

没有答案