更改C中二维动态数组的大小

Ser*_*ruk 5 c arrays dynamic

我创建一个二维动态数组:

a = (int**)calloc(n-1, sizeof(int));
for(i = 0; i < (n-1); i++)
    a[i] = (int*)calloc(n, sizeof(int));
Run Code Online (Sandbox Code Playgroud)

然后我需要更改其大小(添加新行):

a = (int**)realloc(a, n);
a[n] = (int*)calloc(n, sizeof(int));
Run Code Online (Sandbox Code Playgroud)

但是当我想打印我的数组时,

void Print(void){
    int i, j;
    for(i = 0; i < (n-1); i++){
        for(j = 0; j < n; j++){
            printf("%d\t", arr[i][j]);
        }
        printf("\n");
    }
}
Run Code Online (Sandbox Code Playgroud)

我有访问冲突。第一行已打印...我该怎么办?

Tuo*_*nen 4

a = (int**)realloc(a, (n + 1) * sizeof(int *));
n++;
Run Code Online (Sandbox Code Playgroud)