Pthread memory leak in C programming

I have the code below.

void *timer1_function(void * eit); pthread_t timer1; int thread_check1 = 0; line72: thread_check1 = pthread_create( &timer1, NULL, timer1_function, NULL); 

Valgrind shows the result below and says that there is a problem in line 72 . what is wrong with using pthread_create above?

 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> 
+1
source share
1 answer

When you create a stream, you allocate some memory to it. The task of clearing this memory is accomplished by calling pthread_join .

The reason this memory is not cleared when the stream exits is because this data contains information, such as β€œstream completion status,” which the parent may want to check later. Therefore, never join thread thread does not clear this memory.

The concept of unbound flows is similar to zombie processes .

+5
source

All Articles