如何处理分割故障:11 C OSX



我是编程的初学者,我遇到了一个错误,我找不到解释。我已经彻底搜索了一个解决方案,看到很多人遇到了这个问题,但是我无法解决。

我的程序只是创建一个双型矩阵,我将填充两个嵌套循环。编译后,我会得到.exe文件,但是当我运行它时,终端表示分段故障:11登录。

#include <iostream>
#include <math.h>
#include <cstdlib>
int main()
{
        long N,NN = 0;
        double h, tau, T1, T2 = 0; 
        N=100;
        NN=pow(N,3);
        h=1/N;
        tau=pow(1/N,3);
        T1=1;
        T2=1.5;
        double T [N][NN];
         for (int i=0; i<N; i++) {              
                 T [i][0]=T1;
                 for (int j=0; j<NN; j++) {
                       T [0][j]=T1;
                       T [N][j]=T2;}}
        for (int i=1; i<N-1; i++) {
                for (int j=1; j<NN; j++) {
                      T [i][j]=T [i][j-1]+(tau/(pow(h,2)))*(T [i+1][j-1]+T [i-1][j-1]-2*T [i][j-1]);}}

return 0;
}

有人知道问题是什么吗?设置较低的N无济于事。我认为这是一个非常基本的程序,很抱歉打扰大家,谢谢!

您试图分配的数组太大,无法在堆栈上完成,并且您正在获得堆栈溢出。要解决此问题,您可以使用:

double (*T)[NN] = new double[N][NN];

声明您的数组。

最新更新