请问:为何我这样声明二维数组的时候力扣会报错呢?力扣中国版 64. 最小路径和

int minPathSum(int** grid, int gridSize, int* gridColSize){
// int** record=malloc(sizeof(int*)*gridSize);
int record[gridSize][gridColSize[0]];
memset(record, -1, sizeof(record));
for(int row=0;rowrow++){
    for(int col=0;col0];col++){
    if(row==0&&col==0){
    record[0][0]= grid[0][0];
    continue;
    }    
    int min=INT_MAX;
    if(row-1>=0){
        int upMin=record[row-1][col];
        min=fmin(min,upMin);
    }

    if(col-1>=0){
        int leftMin=record[row][col-1];
        min=fmin(min,leftMin);
    }
    record[row][col]=min+grid[row][col];
    }
}
return record[gridSize-1][gridColSize[0]-1];
}

为什么不能用malloc声明二维数组呢 是我哪里做错了么
将第三行的代码换成第二行(int** record=malloc(sizeof(int*)*gridSize);) 力扣就会报错

img


以上为报错内容 如果换成第三行的代码(int record[gridSize][gridColSize[0]];) 即可顺利通过

你这malloc 只是申请了二维数组的行指针空间,每一行还需要再分配空间才行啊