У меня есть следующая строка в моей программе, которая вызывает предупреждение во время выполнения:
if (!is_directory("C:\\NGFMS_Debug\\Files") && !create_directories("C:\\NGFMS_Debug\\Files"))
Текст предупреждения выглядит как итак: «Произошло переполнение буфера в XXX.exe, которое повредило внутреннее состояние программы».
Предупреждение приходит при вызове «is_directory (...)». Я предполагаю, что пространство для строки не выделяется, но я думал, что такой синтаксис был законным.
Функция is_directory является частью boost / filesystem.hpp, и я использую следующие пространства имен:
using namespace boost;
using namespace boost::filesystem;
using namespace std;
Это компилируется под VS2005 C ++. Есть идеи?
Обновление
Я попробовал несколько разных вещей и прошел через код, и вот что я нашел.
Если я это сделаю
char* path_chars_c;
path_chars_c = "C:\\Debug\\Files";
string path_str_c(path_chars_c);
Переменная path_chars_c содержит соответствующую строку, но переменная path_str_c после инициализации содержит мусор. Итак, похоже, что инициализация строки здесь нарушена. Кто-нибудь видел это?