I want to reallocate a 2d array, so that the arrays in the second array become bigger, so the things I want to store are bigger than the arrays I want to store them in and I want to make the arrays bigger. The problem is that I do not really know how to do this. I got it to compile without errors, but in Valgrind I saw a lot of memory errors, so I do something wrong. I saw a previous question about this here but I do not really understand it, so any help and explanation on how to do this would be greatly appreciated.
I have this so far.
int **create2darray(int a, int b) {
  int i;
  int **array;
  array = malloc(a * sizeof(int *));
  assert(array != NULL);
  for (i = 0; i < a; i++) {
    array[i] = calloc(b, sizeof(int));
    assert(array[i] != NULL);
  }
  return array;
}
int **reallocArray(int **array, int size, int i) {
  int i;
  int **safe_array;
  safe_array = realloc(*array ,2 * size);
  assert(safe_array != NULL);
  array = safe_array;
  return array;
}
void free2DArray(int **array, int m) {
  int i;
  for (i = 0; i < m; i++) {
    free(array[i]);
  }
}
int main(int argv, char *argc[]) {
  int i;
  int size;
  int **testArray = create2darray(1, 10);
  size = 10;
  for(i = 0; i < size; i++) {
    testArray[0][i] = 2;
  }
  testArray[0] = reallocArray(testArray, size, 0);
  size = 2 * size;
  for(i = 9; i < size; i++) {
    testArray[0][i] = 3;
  }
  for(i = 0; i < size; i++) {
    printf("%d", testArray[0][i]);
    free2DArray(testArray, size);
  }
  return 0;
}
 
     
     
    