2D阵列的分段错误错误

Max*_*ers 2 c segmentation-fault

有一个奇怪的分段错误错误.以下代码运行正常

#include <stdlib.h> 
#include <stdio.h>
main()
    {
    int matrixSize = 1000;
    int i,j;

    double a[matrixSize][matrixSize];
    for (i = 0; i < matrixSize; i++)
        for (j = 0; j < matrixSize; j++)
            a[i][j] = rand() % 10;

        double b[matrixSize][matrixSize];
    for (i = 0; i < matrixSize; i++)
        for (j = 0; j < matrixSize; j++)
            b[i][j] = rand() % 10;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

但是当我尝试再初始化一个2D数组时,我得到"分段错误"异常:

#include <stdlib.h>
#include <stdio.h>
main()
{
    int matrixSize = 1000;
    int i,j;

    double a[matrixSize][matrixSize];
    for (i = 0; i < matrixSize; i++)
        for (j = 0; j < matrixSize; j++)
            a[i][j] = rand() % 10;

    double b[matrixSize][matrixSize];
    for (i = 0; i < matrixSize; i++)
        for (j = 0; j < matrixSize; j++)
            b[i][j] = rand() % 10;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

潜在的原因是什么?

tpg*_*114 10

您最有可能超出堆栈大小.

在您使用的终端中运行此命令,请尝试输入

ulimit -s unlimited

假设您使用bash(或sh)在Linux系统上运行并重新运行.

如果你必须使用大小的数组,你可以使它们动态,因为如果由于某种原因改变堆栈大小是有问题的,它们就在堆而不是堆栈上.