我有一个包装类,它创建一个文件的临时副本。我希望它在破坏时被删除,但Boost在每次调用boost文件系统时都会出现故障。
MyWrapperClass::~MyWrapperClass()
{
//if(boost::filesystem::exists("path/to/file.txt")) //this seg-faults
//if(boost::filesystem::exists(_pathString)) //so does this
{
boost::filesystem::remove(_pathString); //this also seg faults
}
}
_pathString
变量与用于首先创建文件副本的变量相同。在调试器中,似乎路径字符串确实是正确的。每个文件系统函数都通过path_traits::dispatch
(boost版本1_49_0 path.hpp第135行)
我不知道我是否在这里做某事,但是随着电话堆栈进入杂草,我来到boost_1_49_0\libs\filesystem\v3\src\path_traits.cpp
。第63行的convert_aux
函数创建const char* from_next;
并将其传递给函数in
,而不进行初始化。调试器说这会评估为错误指针,并且in
中Microsoft Visual Studio 8\VC\crt\src\xlocale
的定义中出现了seg-fault。
为什么会发生这种情况?这可能是一个提升中的错误,还是更有可能是我七岁的视觉工作室出现问题?