代码之家  ›  专栏  ›  技术社区  ›  domlao

pthread\u创建内存泄漏

  •  2
  • domlao  · 技术社区  · 16 年前

    我使用C语言和Linux作为我的编程平台。

    但问题是,当pthread\u create函数处理程序退出时,内存中添加的4没有释放。然后,当应用程序再次调用pthread\u create时,会再次添加一个4值,直到它变大。

    我尝试了pthread\u join,但是内存似乎还在变大。

    3 回复  |  直到 16 年前
        1
  •  9
  •   Artelius    16 年前

    ps 不是测量内存泄漏的正确工具。释放内存时,不能保证减小进程的vsize,这是由于内存碎片和避免不必要的系统调用。

    valgrind 是一个更好的工具。

        2
  •  6
  •   David Gelhar    16 年前

    您应该在创建的每个pthread上使用pthread\u detach或pthread\u join(但不能同时使用两者)。pthread\u join等待线程完成;pthread_detach表示您不打算等待它(因此当线程终止时,实现可以自由地回收与该线程关联的存储)。

        3
  •  3
  •   IntelliChick    16 年前

    当你说
    但问题是pthread\u create函数处理程序何时退出

    在线程执行完成后退出时,是否执行显式pthread\u exit(NULL)作为退出的一部分?