【发布时间】:2019-12-19 16:05:47
【问题描述】:
看完这篇文章https://developer.ibm.com/tutorials/l-memory-leaks/我想知道有没有办法取消线程执行并避免内存泄漏。因为我的理解是连接功能正在释放分配的空间。其他命令也应该可以做到这一点。我感兴趣的事情是如何连接释放内存空间和其他功能不能?是否有一个函数可以为女巫线程分配内存空间?这可以给出(映射)吗?我知道人们不应该对此做疯狂的事情,因为它代表了潜在的安全问题。但是还有办法实现吗?
【问题讨论】:
-
我不确定你到底在问什么。当然,还有很多其他方法可以做到这一点。如果像
pthread_join这样的功能不能完全按照您的意愿使用,请不要使用它们并以其他方式管理它。您可以使用pthread_cancel编写可取消的代码,或者,如果这不合适,也可以使用您想要的任何其他机制。只编写你想要的代码有什么问题? -
@Mr. Schwartz,我要解决的问题非常大。例如,如果我有第三方库,那么我可以识别它的线程,但我无法识别库中分配的内存空间,或者我不知道该怎么做(库是二进制文件)。编码这样的东西是一个兔子洞,应该在操作系统级别完成。 Posix 允许取消但不识别单个线程,并且并非所有 Posix 功能都适用于 linux。 Posix 只是操作系统中 stl 的一层。
-
我的想法是,在 Linux 的某个地方,如果启用了某个选项,系统会跟踪线程在堆上进行的分配,因为我知道默认情况下没有任何内容。但我看到一个严肃的问题没有答案。
标签: linux-kernel multithreading memory-leaks pthreads