我用 C++ 编写了一个简单的代码,并在 linux ubuntu 11.04 上用 g++ 编译它,我没有收到任何错误,但是当我运行可执行文件时,我收到此错误“段错误”。
我知道我的代码没有问题,而且这个错误与编译器有关。
有人可以帮帮我吗?
我的代码是:
#include <math.h>
int main()
{
double a[200][200][200],b[200][200][200],c[200][200][200];
int i,j,k;
double const pi=3.14;
for(k=0;k<200;k++)
{
for(j=0;j<200;j++)
{
for(i=0;i<200;i++)
{
a[i][j][k]=sin(1.5*pi*i)*cos(3.5*pi*j)*k;
b[i][j][k]=cos(1.5*pi*i)*cos(2.5*pi*k)*j;
c[i][j][k]=a[i][j][k]-b[i][j][k];
}
}
}
}
最佳答案
这三个数组需要大约 190MB 的空间,这几乎肯定超过了操作系统强加的堆栈大小限制。
尝试在堆上分配它们(使用 new
)而不是将它们放在堆栈上。
关于c++ - 大矩阵计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7636638/