Lectura de la matriz 2D del archivo binario y devuelve el puntero de esta matriz (en C)

Estoy tratando de escribir una función que devuelva el puntero de la lectura de la matriz 2D de un archivo binario. Aunque compilo sin error, siempre hay un error de segmentación, cuando trato de imprimir uno de los elementos de la matriz. Aquí mi código:

double ** readArray(int rows, int cols)
{
   int i;
   double **myArray=malloc(rows*sizeof(double*));
   if (myArray){ 
      for (i=0; i < rows; i++)
      {
        myArray[i]=malloc(cols*sizeof(double));
      }
   }        

   FILE *data;
   data=fopen("matrix.bin", "rb");
   fread(myArray,sizeof(double),rows*cols,data);

   return myArray; 
}

int main ()
{
  int cols = 7;
  int rows = 15;
  double **myArray=readArray(rows, cols);
  printf("%f\n", myArray[1][0]);
  return 0; 
}

Respuestas a la pregunta(2)

Su respuesta a la pregunta