大きな配列を持つクラスを含む C++ で書かれた小さなプログラムがあります。クラスは次のようになります。
class Test
{
public:
Test();
...
private:
int myarray[45000000];
};
これで、この配列がファイルから読み込まれます。わざわざ余分な関数を呼び出すのではなく、コンストラクターで直接これを行いたいと思います。配列は一度だけ読み込む必要があり、その後は変更されません。指定された正確なサイズがあります。
私のコンストラクタは次のようになります。
Test()
{
memset(myarray, 0, sizeof(myarray));
FILE* fstr = fopen("myfile.dat", "rb");
size_t success= fread(myarray, sizeof(myarray), 1, fstr);
fclose(fstr);
}
Visual Studio 2012 Ultimate の使用: このクラスを使用するプログラムを起動しようとすると、クラスが作成されるとすぐに「APPCRASH」でクラッシュし、デバッグしようとすると (ほとんど知識がありません)、エラーはスタックオーバーフローだと思います。
このすべての謎は、myarray が静的変数であり、それを設定するために静的関数を呼び出す必要があった私の以前のバージョンでは、すべてがうまくいったことです。しかし、これをコンストラクターに変換しようとすると、私の試みはすべて失敗します。
それで、私はここで何が間違っていますか?