类内超大数组的构造

created by Dejavu


通过不同的构造方法我们可以选择在堆中或栈中建立数组,
然而当数组过大时往往在栈中的数组会发生内存溢出,而导致程序奔溃
所以大数组尽量要建立在堆中

  • 堆中数组的构建方法
class Test {
public:
  int data;
  bool flag;
  .....
};

//构造类1 栈中分配内存,一般栈的内存分配远小于堆
//因此这里有很大可能会发生段错误
class Model1 {
private:
    Test t[1e10];

public:
    Model1() {}
};
//构造类2 堆中分配内存
//这样构造一般可以避免因类内数组过大导致的段错误
class Model2 {
private:
    Test *t;

public:
    Model2() : t(new Test[1e10]) {}
};
 

你可能感兴趣的:(类内超大数组的构造)