【发布时间】:2021-12-27 17:06:16
【问题描述】:
我有以下简化的代码来为另一个函数的数组分配空间和赋值,通过指向数组的指针传入。索引到取消引用的指针时会导致崩溃:
void foo(int **arr) {
int num_elements = 3;
*arr = malloc(num_elements*sizeof(int));
for(int i=0; i<num_elements; i++){
*arr[i] = i; // crashes here
}
}
int main(){
int *main_arr = NULL;
foo(&main_arr);
// Doesn't get here
for(int i=0; i<3; i++)
printf("%d ", main_arr[i]);
printf("\n");
return 0;
}
我期待输出 0 1 2 ,但我看到的是 Segmentation fault (core dumped)。我正在做的事情的逻辑似乎很合理,所以我不知道该怎么办。
【问题讨论】:
标签: arrays c malloc dereference