title: int matrix with pointers in C - memory allocation confusion
body: <p>I'm having some issues with producing an int matrix without creating memory leaks. I want to be able to make a given (global) matrix into any size dynamically via read_matrix(). But then i want to be able to free the memory later on. So in my main method the second printf should result in a bus error since it should not have any memory allocated to it. How would i go about creating this?</p>
  
  <pre><code>int**       first_matrix;
  int**       second_matrix;
  int**       result_matrix;
  
  int** read_matrix(int size_x, int size_y)
  {
      int** matrix;
      matrix = calloc(size_x, sizeof(int*));
      for(int i = 0;i&lt;size_x;i++) {
          matrix[i] = calloc(size_y, sizeof(int));
      }
      for(int i = 0;i&lt;size_x;i++) {
          for(int j = 0;j&lt;size_y;j++) {
              matrix[i][j] = i*10+j;
          }
      }
      return matrix;
  }
  
  int main(int stackc, char** stack)
  {
      first_matrix = read_matrix(10,10);
      printf("9:3 %d - 4:6 %d \n", first_matrix[9][3], first_matrix[4][6]);
      free(*first_matrix);
      free(first_matrix);
      printf("9:3 %d - 4:6 %d \n", first_matrix[9][3], first_matrix[4][6]);
  }
  </code></pre>