在C语言中调整矩阵的大小

在C语言中调整矩阵的大小,c,data-structures,C,Data Structures,我有一个函数,它可以使C中的矩阵变大。第一次使用它时,它就可以工作,但第二次使用时,我得到了realloc():无效的旧大小。对可能发生的事情有什么想法吗 代码如下: int** resize_matrix(int** matrix, long org_size, long size_inc){ long new_size = org_size + size_inc; int** new; int* temp; new = realloc(matrix, new_size*s

我有一个函数,它可以使C中的矩阵变大。第一次使用它时,它就可以工作,但第二次使用时,我得到了
realloc():无效的旧大小
。对可能发生的事情有什么想法吗

代码如下:

int** resize_matrix(int** matrix, long org_size, long size_inc){

  long new_size = org_size + size_inc;
  int** new;
  int* temp;

  new = realloc(matrix, new_size*sizeof(int*));

  for(long i=0; i<org_size; i++){
    //error happens here, when i=0, but only the second time you run it
    temp = realloc(new[i], new_size*sizeof(int));
    new[i] = temp;
    //clears the added space
    for(long i2=org_size; i2<new_size; i2++){
      new[i][i2] = 0;
    }
  }

  for(long i = org_size; i<new_size; i++){
    new[i] = calloc(new_size, sizeof(int));
  }

  return new;
}
int**resize\u矩阵(int**matrix,long-org\u size,long-size\u inc){
长新尺寸=组织尺寸+尺寸公司;
国际**新;
内部*温度;
new=realloc(矩阵,new_size*sizeof(int*);

对于(long i=0;i发现了错误,这是在调用resize_matrix之后发生的事情,恰好在正确的时间停止了我的输出,使我认为是resize_matrix造成的。很抱歉耽误了您的时间。

最后它应该说“return new”,我忘了更改它。请添加代码以检查realloc()或
calloc())
失败(返回NULL)。另外,请说明如何调用此函数……很可能存在错误。@e2298旧的大小是多少?@JohnZwinck检查了malloc()和calloc()上的错误,没有错误。我只是通过以下方式调用它:
邻接矩阵=调整矩阵大小(邻接矩阵,节点数,100)
我运行了
int**am=malloc(1);am=resize_矩阵(am,01000);am=resize_矩阵(am,100200);
并且运行良好,没有任何错误。所以……还有其他问题。