为什么在线程退出时不会释放线程局部堆内存?

Blu*_*lub 2 c linux valgrind pthreads

参考这个结构,发布一个完整的例子会有点太大:

__thread char* buf;
buf = malloc(1000);
Run Code Online (Sandbox Code Playgroud)

Valgrind说这些字节"肯定"丢失了.他们不应该"仍然可以"到达吗?

Kar*_*ath 9

因为分配的内存不是线程本地的.它由所有线程共享.

另一方面,变量是本地的线程,所以一旦它超出范围,分配的内存肯定会丢失(如果在其他地方没有该指针的副本......显然没有因为valgrind报告肯定丢失了)

你必须这样free做.

  • 不,只有变量是..谁和那个贬低了? (2认同)
  • 这是正确的答案.Downvoters不再傻了. (2认同)