实例化类时出现分段错误,而不是实例化指针时出现分段错误?为什么?

时间:2019-07-04 23:02:06

标签: c++

我有一个下面列出的超级简单程序。当我实例化我的班级时,我遇到了段错误。当我将类实例化为指针时,我没有。为什么是这样?请注意,创建的数组是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;
}

0 个答案:

没有答案