C realloc分割故障



我有一段非常简单的C代码,它使用malloc和realloc,但是如果我改变了第一个数组的一部分的值,它会引起段错误。

#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);
}

我对指针的理解有问题吗?谁能解释一下发生了什么,以及我如何正确使用realloc ?

多谢!

您可能需要:

(*array)[i] = 2;

[]操作符绑定在*之前,所以你的版本做的是*(array[i]),这是错误的

相关内容

  • 没有找到相关文章

最新更新