c - 从 pthread 退出会释放 malloced 内存吗?

标签 c linux memory-management pthreads malloc

假设我已经使用 pthread_create() 启动了新线程,然后使用 pthread_detach() 将其分离。现在,在线程上下文的,我使用malloc() 分配了一些内存。

当线程退出时,malloc'ed 内存会自动释放吗?

最佳答案

  • 线程共享内存资源(至少是 POSIX)。
  • malloc()/realloc()/free() 内存管理实际上并不知道线程 (至少到现在为止)。
  • 因此您应该将 malloc() 的结果视为简单的“资源”。它不是线程链接的。

所以现在答案应该很明显了,分配的任何内存都没有链接到线程,所以 它在线程退出时不是 free()'d。当然你可以提供一些特殊的处理 机制,但它不是自动完成的。

这样做的好处是您可以在线程之间传递内存分配,换句话说,在一个线程中分配此类资源,然后从另一个线程中释放(这对您是否有利)。

希望这会是有用的解释,将分配的内存指针视为任何进程级描述符。

关于c - 从 pthread 退出会释放 malloced 内存吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1689890/

相关文章:

c - 如何解释内存地址分配的顺序?

c - 如何在c中单击按钮时更改窗口?

C - 在实际问题点之前提出的段错误

c++ - 在 ARM 上安装 OpenCV 2.4.9

linux - 使用 FIO(灵活 IO 测试仪)进行 I/O 吞吐量的正确方法

c - C 中数据被覆盖的内存问题

c - 如何找到 sizeof 结构?

将整数转换为函数指针

linux - 提取不包括特定文件夹及其内容的 tar 存档

c++ - 这个重新分配是否正确?