2012-04-01 52 views
1

与我的可执行文件运行valgrind --leak_check=yes我得到以下错误。Valgrind pthread_create灾难

==17325== 136 bytes in 1 blocks are possibly lost in loss record 17 of 21 
==17325== at 0x4004C42: calloc (vg_replace_malloc.c:418) 
==17325== by 0xCC5CA9: _dl_allocate_tls (in /lib/ld-2.5.so) 
==17325== by 0xD0BF5C: [email protected]@GLIBC_2.1 (in /lib/libpthread-2.5.so) 
==17325== by 0x8049334: init (prog.c:238) 
==17325== by 0x804C94F: main (prog.c:163) 

它指向我的pthread_create调用。创建线程后我调用了pthread_detach。我不想调用pthread_join。我搜索了这个,发现很多人面临同样的问题,但我找不到确切的原因。这是因为pthread库的行为吗?有人可以提供很好的链接来讨论这个问题。

回答

2

在分离的线程上调用pthread_join是非法的。如果你想加入它,不要分离线程。

+0

@我不想加入该线程。我在某处读到,调用pthread_join将解决问题,并在valgrind中不给出任何错误。我出于同样的原因调用了pthread_detach。 – Bruce 2012-04-01 03:38:03

+0

我编辑了相应的问题。 – Bruce 2012-04-01 03:38:51