问题遇到的现象和发生背景
本人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报错。
我想要达到的结果
突破结构体中二维数组容量限制,或者说,把这个容量调大一些。