繁体   English   中英

在POSIX THREAD的堆栈上检查内存泄漏的最佳方法是什么?

[英]Best way to check for Memory LEAKS on POSIX THREAD's STACK?

我使用Totalview的Memoryscape做了一些内存泄漏检查,我有“无”,至少没有HEAP ....但似乎像MemoryScape这样的工具只检查堆,而不是堆栈泄漏......

我注意到在AIX和Solaris上发生了一个小泄漏(任何可能是Linux,仍然在检查)....并且我正试图追捕它。

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

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

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

  • 您建议使用哪些工具来查找堆栈上的泄漏? 我在Solaris上使用过“libumem”,但不确定是否找到了我需要的东西。

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

谢谢您的帮助 ;-)

林顿

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

你通过malloc获得的一切,无论你在哪里调用它都来自堆。 内存调试器应该能够捕获泄漏。 Valgrind是一个发现泄漏的好工具,它应该适用于线程。

你不能在堆栈上有“泄漏”。 局部变量的技术术语是“自动变量”,一旦函数退出就会解除分配。

但是如果你有一个可连接的线程,你可能会有泄漏,但是没有在线程句柄上显式调用pthread_join()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM