使用pthread_cancel时内存泄漏

问题描述

| 大家好,我有一些关于线程的问题,例如我是否有一些线程
1
分配了一部分内存,而另一个线程(假设
2
)正在使用pthread_cancel()或仅仅使用
return
杀死线程
1
。分配给它的记忆和平?如果线程
1
没有释放该内存,将会泄漏吗?预先感谢您的任何回答 已编辑 只是为了更清楚一点,我知道ѭ5会杀死线程,但是当我杀死它时,它的内存又如何呢?在
return
的情况下,如果以
1
是主线程,则所有线程将失效。     

解决方法

是的,在这种情况下会泄漏内存。 C没有任何垃圾回收-如果您分配内存而无法释放它,它将被泄漏,简单明了。 如果要避免内存泄漏,请不要致电ѭ8。通过设置一个要求它们退出的标志来使线程正常退出,然后当他们检测到该标志已设置时,可以通过从线程过程返回或调用
pthread_exit
释放内存并杀死自己。 或者,您可以通过调用
pthread_cleanup_push
来设置线程清除处理程序,当线程退出或被调用
pthread_cancel
取消时,该线程将被调用。您可以使用处理程序函数来释放您尚未使用的所有已分配内存。     ,首先,是否立即取消取决于取消状态。 请检查\“ pthread_setcancelstate \”和\“ pthread_setcanceltype \”。 同样重要的是在取消线程后必须有一个处理程序。在处理程序中必须释放所有资源,例如锁和内存,这与return相似。对。 我建议在使用方法或函数之前先对其进行研究。 希望这可以帮助。     

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...