我在 C 和 push() 函数 (creaMatri()) 中有一个 2D 动态分配的数组,它向其中添加了指定数量的子元素的新元素。函数适用于前三个调用,就像一个魅力,但第四个返回错误:
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);
}
size是 2D 数组,其中包含知道 push() 需要分配多少子元素所需的数字。