【发布时间】:2014-01-07 16:55:57
【问题描述】:
我正在学习 C,我尝试为 2D 数组分配内存(我从用户那里获得的数组的维度),但在尝试初始化它后出现分段错误。我的代码是这样的:
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("give the dimensions!\n");
int row,col,i,j;
int **myArray;
printf("\nrows = ");
scanf("%d", &row);
printf("columns = ");
scanf("%d", &col);
myArray = malloc(row*sizeof(*myArray) + col*sizeof(**myArray));
printf("Init the array: \n");
for (i = 0; i < row; i++)
{
for (j = 0; j <col ; j++)
{
scanf("%d", &myArray[i][j]);
}
}
return 0;
}
如果我将数组更改为 myArray[2][2] 并省略 malloc 语句,它可以正常工作..
【问题讨论】:
-
在你真正开始分配二维数组的业务后,给
scanf(" %d", &myArray[i][j]);添加空间
标签: c multidimensional-array dynamic-memory-allocation