我有一个下面列出的超级简单程序。当我实例化我的班级时,我遇到了段错误。当我将类实例化为指针时,我没有。为什么是这样?请注意,创建的数组是800mb,所以即使指针版本可能未实际实例化内部结构,也不确定为什么会出现分段错误? (这是我对为什么在实例化为指针时不会出现段错误的猜测)
#include <iostream>
#define MAX_NUM 100000000
typedef struct SomeStruct
{
SomeStruct *next;
} SomeStruct;
class MyClass
{
private:
SomeStruct* _some_structs[MAX_NUM];
public:
MyClass(){
std::cout << "size of _some_structs " << sizeof(_some_structs) / 1000000 << "mb";
};
};
int main()
{
MyClass ob = MyClass(); //<-- segmentation fault
// MyClass *ob = new MyClass(); //<-- No prob, prints 800mb
return 0;
}