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