C语言如何用realloc重新定义二维数组大小?

比如我有:int **a;
int size = 0;
a = (int **)malloc(size * sizeof(int *));
for (int i = 0; i < size; i ++){
a[i] = (int *)malloc(6 * sizeof(int));
}
如何改变a这个二维数组的长度?我自己的做法是:
a = (int**)realloc(a,size+1);
for(int i = 0; i < size+1; i++){
a[i] = (int*)realloc(a[i],6*sizeof(int));
}
没有报错但是程序没有输出不知道什么原因。好像是第二个式子中for里面的条件i<什么出了问题,但是我真的不知道该怎么改才能改变我的这个二维数组的长度,希望能得到解答,谢谢!!!!
很急!!!!!!!!!!!!!!!

a = (int**)realloc(a,size+1); //这句错了
//改成这样
a = (int**)realloc(a, (size + 1)* sizeof(int *)); //(size + 1)* sizeof(int *)
还有,a[i]的长度不变,不需要再realloc,这样就行了
for (int i = size; i < size + 1; i++) //只给新增的int*分配内存
a[i] = (int*)malloc(6 * sizeof(int)); //malloc
温馨提示:答案为网友推荐,仅供参考
相似回答