Como alocar uma matriz dentro da rotina fortran "chamada" de C

Acho que o título diz o que eu preciso. Eu sei que podemos usar a função "asd" para fazer isso, mas por alguns motivos eu preciso fazer a alocação no Fortran (ou seja, na sub-rotina "asd_"). Aqui está o código C:

#include <stdio.h>

void asd(float **c) {
  *c = (float *) malloc (2*sizeof(float));
  **c =123;
  *(*c+1)=1234;
}

void asd_(float **c);

main () {
  float *c;
  asd_(&c);
// asd(&c); would do the job perfectly
  printf("%f %f \n",c[0],c[1]);
  return 0;
}

E aqui está o código Fortran:

  subroutine asd(c)

  implicit none

  real, pointer, allocatable ::c(:)

  print *, associated(c)
  if(.not. associated(c))  allocate(c(2))

  end subroutine 

Isso aleatoriamente causa falha de segmentação. Qualquer ajuda seria apreciada