在C中调整矩阵的大小

时间:2016-11-20 01:14:26

标签: c data-structures

我有一个函数,它使C中的矩阵更大。它在你第一次使用时工作,但第二次,我得到realloc(): invalid old size。关于可能发生的事情的任何想法?

以下是代码:

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;
}

1 个答案:

答案 0 :(得分:0)

发现错误,这是调用resize_matrix之后的事情,恰好是在正确的时间停止我的输出让我觉得是造成它的resize_matrix。抱歉花时间。