2015-08-28 117 views
0
boost::filesystem::path::imbue(std::locale()); 

工作良好。boost :: filesystem :: path :: imbue失敗,默認std :: locale()

下面的代碼:

boost::filesystem::detail::utf8_codecvt_facet utf8_codecvt_facet; 
boost::filesystem::path::imbue(std::locale(std::locale(), &utf8_codecvt_facet)); 

工作也很好。

下一個代碼:

boost::filesystem::detail::utf8_codecvt_facet utf8_codecvt_facet; 
boost::filesystem::path::imbue(std::locale(std::locale(), &utf8_codecvt_facet)); 
boost::filesystem::path::imbue(std::locale()); 

生成錯誤:

malloc: *** error for object 0x7fff5fbff6e8: pointer being freed was not allocated 
*** set a breakpoint in malloc_error_break to debug 

OSX 10.10.5,Xcode中,升壓1.57,開始主()。

爲什麼?

回答

2

當使用帶facet指針的構造函數時,創建的區域設置將獲取構面的所有權,並因此將其在析構函數中刪除。

在這裏,您將指針傳遞給堆棧分配的構面。

相關問題