【发布时间】:2013-09-19 18:00:40
【问题描述】:
当我使用 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 本身。这可能是什么原因,我该如何解决?提前致谢。
【问题讨论】:
-
将我的编译器从 Apple LLVM 4.2 更改为 LLVM GCC 4.2 修复了该错误。显然,Apple 的编译器将字符串常量存储在 char[1] 缓冲区中。 Boost 将 char[1] 视为空路径并忽略它们,假设 char[1] 仅大到足以容纳终端空字符。这个网站帮助我了解发生了什么:boost.2283326.n4.nabble.com/…
-
你can answer your own question(有时间限制)。事实上,您应该回答您的问题,以帮助未来的访问者。
-
我知道,但由于我的名声太低(我刚加入),我还得再等 6 个小时才能回答我自己的问题。
标签: c++ xcode macos boost filesystems