Как выделить массив внутри фортрановой подпрограммы, «вызываемой» из C

Я думаю, что название говорит, что мне нужно. Я знаю, что мы можем использовать функцию «asd» для этого, но по некоторым причинам мне нужно сделать выделение в Fortran (то есть в подпрограмме «asd_»). Вот код 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;
}

А вот код Фортрана:

  subroutine asd(c)

  implicit none

  real, pointer, allocatable ::c(:)

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

  end subroutine 

Это случайно дает ошибку сегментации. Любая помощь будет оценена.

Ответы на вопрос(3)

Ваш ответ на вопрос