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

C++ 在Mac上使用boost::filesystem连接文件路径时程序崩溃,c++,xcode,macos,boost,filesystems,C++,Xcode,Macos,Boost,Filesystems,当我使用Boost的Filesystem Path类将文件路径与operator/连接起来时,当我的程序执行该行代码并在使用Xcode 4.6.3的OS X上抛出EXC_BAD_访问异常时,它会崩溃 boost::filesystem::path macintoshHD("Macintosh HD"); boost::filesystem::path library("Library"); library = macintoshHD / library; // EXC_BAD_ACCESS

当我使用Boost的Filesystem Path类将文件路径与operator/连接起来时,当我的程序执行该行代码并在使用Xcode 4.6.3的OS X上抛出EXC_BAD_访问异常时,它会崩溃

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修复了该错误

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

该网站帮助我了解了正在发生的事情:

将我的编译器从Apple LLVM 4.2更改为LLVM GCC 4.2修复了该错误。显然,苹果的编译器将字符串常量存储在char[1]缓冲区中。Boost将char[1]视为空路径,并假设char[1]的大小仅足以容纳终端空字符,则忽略它们。这个网站帮助我了解发生了什么:你(时间限制适用)。事实上,你应该回答你的问题,以帮助未来的访客。我知道,但由于我的声誉很低(我刚刚加入),我不得不再等6个小时才能回答我自己的问题。