C push()中的2D动态数组可能只有3倍

时间:2019-02-28 19:45:08

标签: c arrays dynamic-memory-allocation memory-reallocation

我在C和push()函数(creaMatri())中有一个二维动态分配的数组,它向其中添加了指定数量的子元素的新元素。函数适用于前三个调用,就像一个超级按钮一样,但是对于第四个调用则返回错误:

  

realloc():无效的旧大小

void creaMatri(int***arr,int*size,int**dim) {
    int** tmp=realloc(*arr,(*size+1)*sizeof(int));
    if (tmp==NULL) exit(100);
    tmp[*size]=calloc(dim[*size][0]*dim[*size][1],sizeof(int32_t));
    **arr=*tmp;
    (*size)=*size+1;
}

int main() {
    int** matri=malloc(0);
    int matriSIZ=0;

    //code

    creaMatri(&matri,&matriSIZ,sizes);
}

sizes 是2D数组,其中包含所需的数字,这些数字用于知道push()需要分配多少个子元素。

0 个答案:

没有答案