在子功能分配存儲器時,這是我的代碼,這對於由這些參數指定大小的矩陣分配空間,並返回指向在所說的基質:怪異分段故障在C
int **allocateSpace(int row, int col){
int i;
int **a;
a = malloc(sizeof(int *) * row);
for(i = 0; i < row; i ++)
a[i] = malloc(sizeof(int) * col);
return a;
}
上面的代碼作品如預期。
然而,當我的代碼更改爲以下形式,我得到一個分段錯誤:
void allocateSpace(int **a, int row, int col){
int i;
a = malloc(sizeof(int *) * row);
for(i = 0; i < row; i ++)
a[i] = malloc(sizeof(int) * col);
}
似乎從allocateSpace()
函數返回時一樣,分配的內存被釋放(因爲我得到一個分段錯誤)。但爲什麼?我所做的只是爲給定的指針分配內存,並且全部在子功能中完成。
總結我的問題:爲什麼在第二段代碼中出現段錯誤? 非常感謝!
+1你剛剛在我*之前得到了答案,並且*舉了一個如何打電話的例子。 – JeremyP 2012-04-04 10:32:01