假设我在后台线程中分配了一些内存,也就是说,线程堆栈保存着指向该内存的指针。现在我想通过调用 pthread_cancel 来终止后台线程执行。该内存是否会被释放? (我的平台是iOS,编译器是gcc 4.2)
最佳答案
每个线程都需要有自己的堆栈;然而,每个进程通常只有一个堆。当线程被销毁时,没有自动机制来释放堆上分配的内存。你最终得到的只是内存泄漏。
作为一般规则,请避免使用 pthread_cancel
,因为很难确保 pthread_cancel
安全运行。相反,构建某种机制,您可以将消息传递给线程以销毁自身(在释放其拥有的任何资源之后)。
关于c++ - 在iOS上执行pthread_cancel时,堆中的内存会被释放吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5039457/