【发布时间】:2015-10-05 06:01:39
【问题描述】:
我知道这个问题已得到解答,但不知何故对我不起作用。 我像这样为数组动态分配内存:
arr = (int**)(malloc(rows*sizeof(int*)));
arr[0] = (int*)(malloc(rows*columns*sizeof(int))); // <-- THIS DOESN'T WORK
printf("\nArray: \n");
while(fscanf(fp, "%d", &num) == 1) {
//arr[row] = (int*)(malloc(columns*sizeof(int))); <---THIS WORKS
arr[row][col] = num;
printf("%d ", arr[row][col]);
if((++col == columns)){
row++;
col = 0;
printf("\n");
}
}
如果矩阵是 6x6,它会在第 4 行之后引发分段错误。 有什么建议吗?谢谢
编辑: 请参阅:http://www.geeksforgeeks.org/dynamically-allocate-2d-array-c/ 第 4 点。如果我像第 3 点那样做,它会起作用。但我需要它,就像在 4 中一样。
【问题讨论】:
-
问题是什么?
-
@juanchopanza 如果我想在一块内存中分配数组,我必须按照注释“
-
那么问题是什么?