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