0

我正在使用 Oracle Solaris Studio 进行一些内存测试。我刚刚安装了它,并编写了传统的“Hello World”程序以确保一切正常运行。

但是,内存泄漏工具报告说 operator new 正在泄漏 40 个字节...

我读到这是带有 MFC(Microsoft 基础类)的旧版本 Visual Studio 中的一个常见问题,但现在我很困惑,因为这在 Oracle 产品中......对吗?

据我了解,可以忽略。但是每次都因为我打印了一些东西而看到它弹出很烦人。

可以做些什么吗?

谢谢。

这是代码:

#include <iostream>

int main(void)
{
 std::cout<<"Hello World\n";

 return 0;
}
4

3 回答 3

2

我用 Sun Studio 12 编译并用 TotalView 检查:

确实存在 40 字节的堆分配,没有匹配的释放,由 制造__rwstd::facet_imp* __rwstd::facet_maker<std::codecvt<char,char,__mbstate_t>>::maker_func( int, const char*, unsigned )、调用由__rwstd::facet_imp* std::locale::__make_explicit( const std::locale::id& ,bool, int, __rwstd::facet_imp*(*)(int,const char*,unsigned)) const、由调用由filebuf::overflow调用由filebuf::sync调用operator<<

请注意,除非您需要与基于其基于 roguewave 的 libCstd 构建的东西的二进制兼容性,否则Oracle 建议使用编译。-library=stlport4使用此选项编译时,根本没有进行堆分配main()

于 2012-05-04T18:52:04.490 回答
0

来自IBM的Purify可以检测内存泄漏,也许你可以试试。

于 2012-05-04T19:29:38.093 回答
0

我尝试了 Solaris Studio 内存工具,发现它非常有用……而且准确,即使我认为我的代码比该工具更了解。也许那些迅速诋毁 Solaris Studio Memory Tool 的人愿意尝试一下,看看它比建议的替代品好多少。

于 2012-05-07T16:13:23.573 回答