在C ++中可以将多少个值放入数组?

时间:2014-10-27 16:13:13

标签: c++ arrays double

我想读取从文件到数组的double值数组。我喜欢128 ^ 3的值。只要我保持128 ^ 2的值,我的程序工作得很好,但现在我得到一个"分段错误"错误,即使128 ^3≈2,100,000远远低于int的最大值。那么你实际可以在多个数组中加入多少个值?

#include <iostream>
#include <fstream>
int LENGTH = 128;

int main(int argc, const char * argv[]) {
    // insert code here...
    const int arrLength = LENGTH*LENGTH*LENGTH;
    std::string filename = "density.dat";
    std::cout << "opening file" << std::endl;
    std::ifstream infile(filename.c_str());
    std::cout << "creating array with length " << arrLength << std::endl;
    double* densdata[arrLength];


    std::cout << "Array created"<< std::endl;
    for(int i=0; i < arrLength; ++i){
        double a;

        infile >> a;
        densdata[i] = &a;
        std::cout << "read value: " << a  << " at line " << (i+1) << std::endl;
    }
    return 0;
}

1 个答案:

答案 0 :(得分:9)

您正在堆栈上分配数组,并且堆栈大小是有限的(默认情况下,堆栈限制往往是一位数兆字节)。

您有几种选择:

  • 增加堆栈的大小(在Unix上为ulimit -s);
  • 使用new;
  • 在堆上分配数组
  • 转到使用std::vector