boost :: filesystem :: path :: imbue失败,默认为std :: locale()

时间:2015-08-28 14:04:52

标签: c++ xcode boost malloc

getx()

效果很好。

下一个代码:

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());

OSX 10.10.5,Xcode,boost 1.57,开始main()。

为什么?

1 个答案:

答案 0 :(得分:3)

当使用构造函数获取构面指针时,创建的区域设置将获得构面的所有权,因此将在其析构函数中删除它。

在这里,您将指针传递给堆栈分配的构面。