当我使用运算符/使用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本身。可能是什么原因,我该如何解决?提前谢谢。
答案 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