[英]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.