2012-05-04 34 views
0

我正在使用Oracle Solaris Studio進行一些內存測試。我剛剛安裝了它,並編寫了傳統的「Hello World」程序以確保所有程序都正常運行。Oracle Solaris Studio內存泄漏與cout

但是,內存泄漏工具報告運營商新的泄漏40個字節...

我看,這是與MFC(Microsoft基礎類)舊版本的Visual Studio的一個共同的問題,但現在我我很困惑,因爲這在Oracle產品中......對嗎?

據我所知可以忽略。但是看到它每次都會彈出來,這只是因爲我打印了一些東西。

可以做些什麼呢?

謝謝。

下面是代碼:

#include <iostream> 

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

return 0; 
} 
+1

如果他們的記憶工具和他們的編譯器一樣糟糕,我就不打擾了。改爲給valgrind一槍。但__只是在案例中,向我們展示您的實際代碼。 – ildjarn

+0

ohh ...這聽起來很難過,我認爲這個工具很有前途:(所以,有沒有其他免費或開源的IDE有這種探查工具? – user1274605

+0

你在'Oracle Solaris Studio'中失去了我 – David

回答

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<<調用。

但是請注意Oracle recommends compiling-library=stlport4,除非您需要與基於roguewave的libCstd構建的東西進行二進制兼容。用此選項編譯,根本沒有在main()中進行堆分配。

+0

感謝Cubbi,我會盡力解決的! – user1274605

+0

問題解決了!感謝Cubbi和所有你的幫助。 – user1274605

0

IBM的Purify可以檢測到內存泄漏,也許你可以嘗試。

0

我試過Solaris Studio內存工具,發現它非常有用......並且準確,即使我認爲我比工具更瞭解我的代碼。也許那些很快詆譭Solaris Studio內存工具的人會願意嘗試看看它比建議的替代方案好多少。