0

当我使用 Boost 的 Filesystem Path 类将文件路径与 operator/ 连接时,我的程序在执行该行代码并在带有 Xcode 4.6.3 的 OS X 上引发 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 本身。这可能是什么原因,我该如何解决?提前致谢。

4

1 回答 1

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

于 2013-09-20T15:00:40.740 回答