我编写了一个注定要在Solaris SPARC系统上的C应用程序.但是,我的大部分开发工作都是在Mint Linux 64位计算机上进行的.
我已经看到内存泄漏很小,并且一直在Linux上使用Valgrind进行检查.
我的问题是:如果我在Linux上运行Valgrind并将所有内存泄漏的内容弄成100%(或至少接近100%),那么如果我可以在Solaris上编译该应用程序,是否意味着它也应该表现相同(意思是不必使用Solaris特定的内存泄漏检测工具?)
我问的原因是,我真的没有时间学习每个平台的所有这些分析工具……我希望,如果Valgrind告诉我修复某些问题,那么该修复程序也将在Solaris上运行?
我知道Linux和Solaris之间的内存管理会大不相同,但是在内存泄漏检测方面,它们肯定是一样的吗?
任何建议/帮助将不胜感激;-)
林顿
解决方法:
一般而言,如果两个系统上的代码执行路径相同,并且您清除了其中一个的内存泄漏,则可以,它也会在另一个系统上清除它们.
但是,当机器之间的情况有所不同时,并不是很简单. EG,它试图在linux系统上做一件事,而在solaris系统上做另一件事.
Valgrind是一个很棒的工具,最好的办法是在linux上尝试一下,看看它是否也清除了solaris上的泄漏(请使用ps或列出了solaris下内存大小的其他工具进行检查,并确保它不会在那里增加) ).