类内超大数组的构造

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=" /> 

推荐阅读更多精彩内容

  • JVM内存模型Java虚拟机(Java Virtual Machine=JVM)的内存空间分为五个部分,分别是: ...
    禅与计算机程序设计艺术阅读 2,040评论 2 26
  • 这篇文章是我之前翻阅了不少的书籍以及从网络上收集的一些资料的整理,因此不免有一些不准确的地方,同时不同JDK版本的...
    高广超阅读 13,053评论 3 82
  • (一)Java部分 1、列举出JAVA中6个比较常用的包【天威诚信面试题】 【参考答案】 java.lang;ja...
    独云阅读 4,726评论 0 62
  • 午夜醉饮浅入眠,淅沥雨声幻作梦。 绿肥红瘦海棠花,痴望春色吹北风。 满地红杏绿杨柳,伫倚窗前叹红尘。 清晨鸟鸣传入...
    轻念韶华阅读 141评论 0 5
  • 我向来对鬼神敬而远之,刚开始看剧有鬼什么的我都得用手遮住眼睛。后来,渐渐地发现,每一个单元都有自己的寓意,仔细品来...
    梧声阅读 89评论 0 0