在C ++编程的pthread内存泄漏(pthread memory leak in C progr

2019-10-16 21:09发布

我有下面的代码。

void *timer1_function(void * eit);
pthread_t timer1;
int thread_check1 = 0;

line72: thread_check1 = pthread_create( &timer1, NULL, timer1_function,  NULL);

Valgrind的下面示出的输出,并表示有在一个问题line 72 。 什么是错用pthread_create使用上面?

272 bytes in 1 blocks are possibly lost in loss record 2 of 5
  in main in main.c:72
  1: calloc in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so
  2: _dl_allocate_tls in /build/buildd/eglibc-2.15/elf/dl-tls.c:297
  3: pthread_create@@GLIBC_2.2.5 in /build/buildd/eglibc-2.15/nptl/allocatestack.c:571
  4: main in <a href="file:///home/user/Project-build-desktop-Qt_4_8_1_in_PATH__System__Release/../project/main.c:72" >main.c:72</a>

Answer 1:

当你创建一个线程,可以分配与它的一些记忆。 清理该存储器的任务是通过调用完成pthread_join

该内存是不是在线程退出清理的原因是,这些数据包含诸如“线程的退出状态”,其父母可能要在以后退房。 因此,从来没有join荷兰国际集团线程意味着永远清理内存。

未加入线程的概念类似于僵尸进程 。



文章来源: pthread memory leak in C programming