c++ - 大矩阵计算

标签 c++

我用 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/

相关文章:

c++ - 检查模板类实例化

c++ - 使用 ncurses 和 C++ 输出一个漂亮的 "block"字符?

c++ - 平行于向上 vector 转换阴影时的 LookAt 矩阵

c++ - Char 指针与传递给函数的 Int 指针

c++ - pthreads 和快速排序的问题

c++ - 用于多层数据组织的结构与数组

C++ static_cast 运行时开销

c++ - 如何在 C/C++ 程序中创建标签

c++ - 在这种情况下, std::stack::push() 和 std::stack::emplace() 之间有区别吗?

c++ - 无法引用类继承默认构造函数