wxl527 2022-04-24 08:43 采纳率: 33.3%
浏览 79

如何提高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报错。

我想要达到的结果

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

  • 写回答

1条回答 默认 最新

  • fuill 2022-04-24 09:58
    关注

    malloc申请内存

    评论

报告相同问题?

问题事件

  • 创建了问题 4月24日

悬赏问题

  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥15 想问一下树莓派接上显示屏后出现如图所示画面,是什么问题导致的
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败