如何提高C语言结构体中二维数组的最大容量?

问题遇到的现象和发生背景

本人C语言初学者,最近在写dijkstra算法时,发现结构体中的二维数组arr[1400][1400]会触发segmentation fault (core dumped)错误,而arr[1300][1300]就不会出错。
搜索了一番,看到有些帖子里说跟堆栈有关,但未查到具体解决办法。

问题相关代码,请勿粘贴截图
#include "stdio.h"
#include "stdlib.h"
#include "math.h"
#include "time.h"

#define MAXVEX 1400
#define GRAPH_INFINITY 65535

typedef struct
{
    int vexs[MAXVEX];
    int arc[MAXVEX][MAXVEX]; 
    int numVertexes;
}MGraph;


// define a detailed graph
void CreateGraphFor2D(MGraph *G)
{
    int i, j;
    G->numVertexes=5;

    for (i=0; i<G->numVertexes; i++)
    {
        G->vexs[i]=i;
    }

   
    for (i=0; i<G->numVertexes; i++)
    {
        for(j=0; j<G->numVertexes; j++)
        {
            if(i==j)
                G->arc [i][j]=0;
            else
                G->arc [i][j]=G->arc [j][i]=GRAPH_INFINITY;
        }
    }
}


int main()
{
    MGraph G;
    CreateGraphFor2D(&G);

    return 0;
}

运行结果及报错内容
[1]    3575 segmentation fault (core dumped)  
我的解答思路和尝试过的方法

尝试定义全局变量二维数组arr[1400][1400],然后在结构体中定义指针指向该全局变量,结果是依然core dumped报错。

我想要达到的结果

突破结构体中二维数组容量限制,或者说,把这个容量调大一些。

malloc申请内存