【发布时间】:2021-12-08 19:38:01
【问题描述】:
我有一个非常基本的问题,我尝试回答了好几个小时,但它仍然不起作用。 我想在 main 中 malloc 一个数组,将它传递给另一个函数,重新分配它,然后更改它的值。 为什么以下代码有效:
void fun(int **array, int *size) {
*array = (int *) realloc(*array, *size * sizeof(int));
*array[0] = 1;
return;
}
int main() {
int size = 5;
int *array = (int *) malloc(2 * sizeof(int));
fun(&array, &size);
return 0;
}
...但是一旦我尝试像这样更改数组 [1]:
void fun(int **array, int *size) {
*array = (int *) realloc(*array, *size * sizeof(int));
*array[0] = 1;
*array[1] = 2;
return;
}
int main() {
int size = 5;
int *array = (int *) malloc(2 * sizeof(int));
fun(&array, &size);
return 0;
}
...它不再起作用了。它给了我分段错误和大小为 4 的无效写入。
【问题讨论】:
-
*array[0]:检查运算符优先级,应该是(*array)[0]。
标签: arrays c segmentation-fault malloc realloc