我是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'中的函數調用什麼都不做(除了內存泄漏)。 –