美文网首页
类内超大数组的构造

类内超大数组的构造

作者: ericdejavu | 来源:发表于2017-09-17 15:59 被阅读0次

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

    相关文章

      网友评论

          本文标题:类内超大数组的构造

          本文链接:https://www.haomeiwen.com/subject/ysxmsxtx.html