在Mac上使用/使用boost :: filesystem连接文件路径时程序崩溃

时间:2013-09-19 18:00:40

标签: c++ xcode macos boost filesystems

当我使用运算符/使用Boost的Filesystem Path类连接文件路径时,我的程序在执行该行代码时崩溃并在OS X上使用Xcode 4.6.3抛出EXC_BAD_ACCESS异常。

boost::filesystem::path macintoshHD("Macintosh HD");
boost::filesystem::path library("Library");

library = macintoshHD / library; // EXC_BAD_ACCESS

当我尝试使用字符串常量或std :: strings连接路径时,会发生同样的情况。

boost::filesystem::path cwd(boost::filesystem::current_path());

boost::filesystem::path resources = cwd / "Resources"; // EXC_BAD_ACCESS

问题似乎出现在Boost / Filesystem / Path本身。可能是什么原因,我该如何解决?提前谢谢。

1 个答案:

答案 0 :(得分:1)

将我的编译器从 Apple LLVM 4.2 更改为 LLVM GCC 4.2 修复了该错误。

显然Apple的编译器将字符串常量存储在char [1]缓冲区中。 Boost将char [1]视为空路径并忽略它们,假设char [1]仅足以容纳终端空字符。

这个网站帮助我了解发生了什么: http://boost.2283326.n4.nabble.com/boost-filesystem-path-operator-is-broken-for-char-1-in-1-48-td4574639.html