2
我想從一個文件讀取一個double值的數組。我有128^3個值。我的程序工作得很好,只要我停留在128^2的值,但現在我得到一個「分段錯誤」的錯誤,儘管128 ^3≈2,100,000遠低於int的最大值。那麼你可以將多少個值放入一個雙精度數組中?可以在C++中將數組放入多少個值?
#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;
}
儘可能多的它。你實際要問的是,堆棧有多大。 – Deduplicator 2014-10-27 16:15:43
取決於您的構建分配多少堆棧空間。 – 2014-10-27 16:15:54
堆棧大小有限,1mb是典型值。當您需要存儲大量元素時,請使用動態內存。特別是我建議使用矢量和push_back。此外,在每次循環迭代後,存儲在densdata中的指針都將變爲無效。 – 2014-10-27 16:16:40