[英]C++ read text file into array, run error: segmentation fault
我正在尝试将文本文件读入 3D 数组。 编译顺利,但出现运行错误:“分段错误”。 有人有建议吗? 谢谢!
#include <fstream>
using namespace std;
const int x = 288;
const int y = 288;
const int z = 30;
float realimg[x][y][z];
Array<std::complex<float>,3> realimage(x,y,z);
Array<std::complex<float>,3> imagimage(x,y,z);
ifstream fin1("realfile.txt");
for ( int kk = 0; kk < z; ++kk )
{
for ( int jj = 0; jj < y; ++jj )
{
for ( int ii = 0; ii < x; ++ii )
{
fin1 >>realimg[ii][jj][kk];
realimage(ii,jj,kk)=realimg[ii][jj][kk];
}
}
}
const int x = 288;
const int y = 288;
const int z = 30;
float realimg[x][y][z];
这在堆栈上分配realimg
数组。 这个数组的大小是288*288*30*sizeof(float) == 9953280 bytes == 9.5MiB
。 在典型的 Linux 系统上,默认堆栈大小为8MiB
。
如果在您执行ulimit -s unlimited
后崩溃消失,那么堆栈耗尽确实是您的问题。 一种可能的解决方案是在堆上分配readlimg
(使用malloc
)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.