我想读取从文件到数组的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;
}
答案 0 :(得分:9)
您正在堆栈上分配数组,并且堆栈大小是有限的(默认情况下,堆栈限制往往是一位数兆字节)。
您有几种选择:
ulimit -s
); new
; std::vector
。