вызовы boost :: filesystem являются ошибками в Destructor - PullRequest
1 голос
/ 14 марта 2012

У меня есть класс-оболочка, которая делает временную копию файла. Я бы хотел, чтобы он был удален при уничтожении, но 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 испытывает проблемы с моей семилетней визуальной студией?

...