C realloc分段错误

use*_*038 0 c malloc realloc segmentation-fault

我有一个非常简单的C代码,它使用malloc和realloc,但是如果我更改了属于第一个数组的值,它就会引发seg错误.

#include <stdlib.h>

void increase(int** array) 
{
    int * new_array;
    new_array = realloc(*array, 10 * sizeof(int));
    if (new_array != NULL) {
        *array = new_array;
    }
    else {
        // Error in reallocation
    }
    int i = 3;
    *array[i] = 2; // Seg fault if i = 0, 1, 2, 3
}

main()
{
    int *array = malloc(4 * sizeof(int));
    increase(&array);
    free(array);
}
Run Code Online (Sandbox Code Playgroud)

我对错误指针的理解是什么?任何人都可以解释发生了什么以及如何正确使用realloc?

非常感谢!

doh*_*shi 5

你可能需要:

(*array)[i] = 2;
Run Code Online (Sandbox Code Playgroud)

[]运算符在*之前绑定,所以你的版本正在执行*(array [i]),这是错误的.

  • 运算符优先级 - 数组索引在指针取消引用之前发生,但您希望反过来. (2认同)