Как выделить массив внутри фортрановой подпрограммы, «вызываемой» из 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
Это случайно дает ошибку сегментации. Любая помощь будет оценена.