gpt4 book ai didi

c - 使用 pthread_cancel() 时内存泄漏

转载 作者:行者123 更新时间:2023-12-04 10:28:35 29 4
gpt4 key购买 nike

大家好,我有一些关于线程的问题,例如我有一些线程 1 分配了一些内存,另一个线程(假设 2)是使用 pthread_cancel() 或仅使用 return 杀死线程 1 它分配的内存和平发生了什么?如果线程 1 没有释放这 block 内存会泄漏吗?提前感谢任何答案

已编辑

只是为了让它更清楚,据我所知,pthread_cancel() 会杀死线程,但是当我杀死线程时,它的内存发生了什么?在 return 的情况下,如果 1 是主线程,则所有线程都将死掉

最佳答案

是的,在那种情况下它会泄漏内存。 C 没有任何垃圾收集——如果您分配内存但未能释放它,它将被泄漏,简单明了。

如果你想避免内存泄漏,不要调用pthread_cancel。通过设置一个标志要求它们退出,让您的线程正常退出,然后当它们检测到该标志已设置时,它们可以释放它们的内存并通过从它们的线程过程返回或调用 pthread_exit 来杀死自己.

或者,您可以通过调用 pthread_cleanup_push 来设置线程清理处理程序,当您的线程退出或通过调用 pthread_cancel 取消时将被调用。您可以使用一个处理函数来释放您未分配的任何已分配内存。

关于c - 使用 pthread_cancel() 时内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6117739/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com