c - 检查 POSIX THREAD 堆栈上内存泄漏的最佳方法?

标签 c

我已经使用 Totalview 的 Memoryscape 进行了一些内存泄漏检查,但我“没有”,至少在 HEAP 上没有……但是像 MemoryScape 这样的工具似乎只检查堆,而不是堆栈泄漏……

我注意到 AIX 和 Solaris(任何可能是 Linux,仍在检查)上发生了一个小泄漏......并且我正在努力寻找它。

我确实在我的应用程序中使用一个(可连接的)线程来完成所有工作...

请耐心等待,C 不是我的日常工作 ;-) 但我有 2 个问题:

  • 如果我生成一个 POSIX 线程并且它执行 malloc 等...这些是在堆上还是在线程堆栈上?当线程未释放 malloc 时,内存检查(堆)工具通常还会发现泄漏吗?

  • 您会推荐使用哪些工具来查找 STACK 上的漏洞?我在 Solaris 上使用过“libumem”,但不确定是否能找到我需要的东西..

我可以在 Linux 上使用 VALGRIND 来检查我的线程堆栈上的泄漏吗?

感谢您的帮助;-)

林顿

最佳答案

If I spawn an POSIX thread and it does malloc's etc...are these on the heap or on the threads stack? Would a memory checking (heap) tool typically also find leaks when a thread does not free a malloc?

你通过malloc获得的所有东西,无论你在哪里调用它都是从堆中获得的。内存调试器应该能够捕获泄漏。 Valgrind 是一个很好的查找泄漏的工具,它应该与线程一起工作。

关于c - 检查 POSIX THREAD 堆栈上内存泄漏的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8365851/

相关文章:

c - C缓冲区溢出的解释

c - 系统调用 - 如何在字符串中查找字符(如果该字符存在)

c - 目前有没有办法让两个以太网端点发现它们之间有多少个交换机或路由?

c - 使用 fork 和 exec 在 C linux 中执行程序

c - 将文本放入 scanf 会使代码输出随机数?

c - 循环展开,性能实验室

c - 新指针(通过 malloc)与释放/旧指针之一相同

c - 为什么 makecontext 的函数只接受整数参数

以引用圆方式将弧度转换为度数

c - 将文件重定向为 C 中的输入