【问题标题】:Valgrind pthread_create woesValgrind pthread_create 问题
【发布时间】:2012-04-01 03:14:13
【问题描述】:

在使用我的可执行文件运行 valgrind --leak_check=yes 时,出现以下错误。

==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: pthread_create@@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 库的行为吗?有人可以提供讨论这个问题的好链接。

【问题讨论】:

    标签: c


    【解决方案1】:

    在分离的线程上调用pthread_join 是非法的。如果您希望能够加入线程,请不要分离线程。

    【讨论】:

    • @我不想加入这个话题。我在某处读到调用 pthread_join 将解决问题并且在 valgrind 中没有错误。出于同样的原因,我调用了 pthread_detach。
    猜你喜欢
    • 2019-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-02
    • 1970-01-01
    • 2013-10-07
    • 2021-03-02
    • 2015-04-04
    相关资源
    最近更新 更多