原因:宣言ハードコードされたのstd ::文字列は、私は、実行時の警告の原因となる私のプログラムに次の行を持っているバッファオーバーフロー
if (!is_directory("C:\\NGFMS_Debug\\Files") && !create_directories("C:\\NGFMS_Debug\\Files"))
警告のテキストはそうです:「バッファオーバーランが発生しましたプログラムの内部状態を破損しているXXX.exeにあります。
「is_directory(...)」の呼び出しで警告が表示されます。私は文字列のスペースが割り当てられていないと推測していますが、このような構文は合法だと思いました。
is_directory機能は、ブースト/ 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は、初期化後にゴミが含まれています。だからここで文字列の初期化が壊れているようです。誰もこれを見たことがありますか?
バッファオーバーフローによって例外が発生することはありません。実際に例外が発生している場合は、さらに情報を提供する必要があります。 – ildjarn
@ildjarn私はWindowsのブレークポイントを見ています。それに応じて変更された投稿。 – Ian
私は混乱しています。これはコンパイラの警告ですか?あなたは、そのままメッセージを投稿するべきです。 – Gabe