我是C编程的新手(长时间重新学习它)。我正在尝试使用malloc动态分配内存到二维数组。我试图按照如下的计算器上的答案如this和this。但我仍然遇到分段错误。动态分配C数组中的二维数组时出现分段错误
我的代码是如下
#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>
void allocate2DArray(int **subset, int a, int b)
{
subset = (int **)malloc(a * sizeof(int *));
int i,j;
for(i = 0 ; i < a ; i++)
subset[i] = (int *) malloc(b * sizeof(int));
for(i = 0 ; i < a ; i++)
for(j = 0 ; j < b ; j++)
subset[i][j] = 0;
}
int main()
{
int **subset;
int a = 4, b = 4;
allocate2DArray(subset, a, b);
int i,j;
for(i = 0 ; i < a ; i++)
{
for(j = 0 ; j < b ; j++)
{
printf("%d ", subset[i][j]);
}
printf("\n");
}
}
当我评论行打印的阵列,它好好尝试给出任何错误和程序的执行没有段故障。请帮助我了解我哪里出错了。
C中的函数参数通过值*传递*。所以你在'main'中的函数调用什么都不做(除了内存泄漏)。 –