我有一个小程序,用 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 是一个静态变量,我必须调用一个静态函数来设置它,一切都很好。但是尝试将其转换为构造函数,尽我所能,我所有的尝试都失败了。
那么我在这里做错了什么?