Lendo a matriz 2D do arquivo binário e retornando o ponteiro dessa matriz (em C)

Eu estou tentando escrever uma função que retorna o ponteiro da matriz 2D lida de um arquivo binário. Embora eu compile sem erros, sempre há uma falha de segmentação, quando tento imprimir um dos elementos da matriz. Aqui meu 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; 
}

questionAnswers(2)

yourAnswerToTheQuestion