我的程序中有以下行导致运行时警告:
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在初始化后包含垃圾.所以看起来字符串初始化在这里被打破了.有没有人见过这个?