c++ - 在iOS上执行pthread_cancel时,堆中的内存会被释放吗?

标签 c++ c ios pthreads

假设我在后台线程中分配了一些内存,也就是说,线程堆栈保存着指向该内存的指针。现在我想通过调用 pthread_cancel 来终止后台线程执行。该内存是否会被释放? (我的平台是iOS,编译器是gcc 4.2)

最佳答案

每个线程都需要有自己的堆栈;然而,每个进程通常只有一个堆。当线程被销毁时,没有自动机制来释放堆上分配的内存。你最终得到的只是内存泄漏。

作为一般规则,请避免使用 pthread_cancel,因为很难确保 pthread_cancel 安全运行。相反,构建某种机制,您可以将消息传递给线程以销毁自身(在释放其拥有的任何资源之后)。

关于c++ - 在iOS上执行pthread_cancel时,堆中的内存会被释放吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5039457/

相关文章:

c++ - cmake 找不到使用 vcpkg 安装的库

c++ - 非标准基础中的算术

c - fwrite() 替代 32 位系统上的大文件

iphone - 在底部加载最近的消息并放置一个加载旧消息按钮以在 TableView 上加载旧消息

c++11 to_string 与 code::blocks -std=c++11 flag already selected

c++ - Visual Studio 中的多个主要 CPP 文件?

c - 线程 ID 和进程 ID 之间的关系

c - 我正在尝试为一个类实现一个基本的 shell,但不断出现段错误。在我创建 getCommandAndArgs 函数之前它可以工作,为什么现在不行呢?

iphone - 具有滑动效果的 Tabbar Controller

iphone - shouldChangeCharactersInRange 一次只取一位数字