这是我的代码,它为参数指定大小的矩阵分配空间,并返回指向所述矩阵的指针:
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()
函数返回时,分配的内存被释放(因为我遇到了分段错误)。但为什么?我所做的只是为给定的指针分配内存,这一切都在子函数中完成。
总结我的问题:为什么我在第二段代码中出现分段错误?非常感谢你!