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]) {}
};
<img src="data:image/jpeg;base64,kVxOOAhwwZL/a5mKlx1MtI/djfPzAGTkWy3vO3L+Di0=" />
网友评论