C++Builder XEのifstreamでCodeGuardがエラーを検出する

次のコードをC++Builder XEで実行すると、CodeGuardがエラーを検出する。

#include <fstream>
#include <string>

const UnicodeString filename = L"C:\\file.txt";
std::ifstream ifs(filename.c_str());
std::string buf;
while(ifs && getline(ifs, buf)) //ここでエラー
{
}

エラーメッセージは次の通り。

Bad parameter 処理中: Project1.exe(1368)  - c:\program files\embarcadero\rad studio\8.0\include\../include/dinkumware/fstream#24
  A bad file or pipe stream (0x32BC08C0) has been passed to the function.
  0x00409B68 呼び出し先:  fgetc(0x32BC08C0)
    0x00408DD6 - c:\program files\embarcadero\rad studio\8.0\include\../include/dinkumware/fstream#24
    0x00407A09 - c:\program files\embarcadero\rad studio\8.0\include\../include/dinkumware/fstream#343
    0x004078D5 - c:\program files\embarcadero\rad studio\8.0\include\../include/dinkumware/fstream#323

以前にも似たような現象に遭遇した覚えがあるので、ブログの記事を検索すると見つかった。

同じ問題かな。

追記
エラーが発生するのは、プロジェクトオプションで「CodeGuardを有効にする」がtrueで、「動的RTLとリンク」がtrueのときです。

コメント

  1. 高橋様
    コメントありがとうございます。
    QCのと同じ問題だと思います。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください