У меня есть класс-оболочка, которая делает временную копию файла. Я бы хотел, чтобы он был удален при уничтожении, но 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
(расширенная версия 1_49_0 path.hpp, строка 135)
Я не знаю, нахожусь ли я здесь чем-то, но после стека вызовов в сорняки я прихожу к boost_1_49_0\libs\filesystem\v3\src\path_traits.cpp
. Функция convert_aux
в строке 63 создает const char* from_next;
и передает ее в функцию in
без ее инициализации. Отладчик говорит, что это приводит к неверному указателю, и ошибка seg возникает в определении in
в Microsoft Visual Studio 8\VC\crt\src\xlocale
.
Есть идеи, почему это происходит? Может ли это быть ошибка в boost или более вероятно, что boost испытывает проблемы с моей семилетней визуальной студией?