Visual stduio 2008 c++ を使用しています。そして、私はWindowsフォームアプリケーションを書いています。Form1.h の先頭にある FILE* 配列をグローバル値として宣言します。
const int k = 1; //i need to change k to 2 sometimes.
FILE* myFiles[k];
From1 のコンストラクターでは、for ループを使用してファイルを fopen します。
for(int i = 0; i < k; ++i)
{
char filename[100] = "";
sprintf(filename,"Record/record_%ld_%d.txt",g_recordName,i);
myFiles[i] = fopen(filename,"w");
}
そして、このフォームにタイマーを設定します。タイマーを刻むたびに、何かが myFiles に出力されます。ここまでは問題ありませんが、次のようなものを入れると
fprintf(myFiles[0],"%d",1234);
forループの後にコンストラクターに。この行は問題なく動作しますが、タイマーの tick イベントで何かを fprintf しようとすると、myFiles[0] が既に NULL に設定されていることがわかりました!!
さらに、コンストラクターで I の場合fprintf(myFiles[0],"something")
、FILE ポインターはタイマーの tick イベントで null になりません。
なぜこれが起こるのですか?誰かが理由を知っていますか?