Fortran Coder

查看: 12404|回复: 6
打印 上一主题 下一主题

[混编] 从C传递数组到Fortran

[复制链接]

69

帖子

7

主题

0

精华

专家

F 币
320 元
贡献
224 点
楼主
发表于 2014-3-13 09:11:18 | 显示全部楼层
chuxf 发表于 2014-3-13 00:43
我把 float *a 改成 float **a 以后就可以正常运行了。

因为平时用 Binding 模块少,不太清楚具体如何规定 ...

type(c_ptr),value 对应C的 void*,type(c_ptr)对应C的 void**,详见gfortran的manual。

69

帖子

7

主题

0

精华

专家

F 币
320 元
贡献
224 点
沙发
发表于 2014-3-13 09:27:14 | 显示全部楼层
本帖最后由 jason388 于 2014-3-13 09:30 编辑

即使运行正常也不应该像楼主这样使用。无论是Fortran还是C的动态内存分配,一般均应该分配/释放成对使用,以避免内存泄漏。因此,如果主程序为Fortran,则全局变量的内存分配和释放应该由Fortran负责,同样如果主程序为C则全局变量的内存分配和释放应该由C负责,当然函数内的局部变量的内存分配和释放不在此列。

按Fortran2003标准,Fortran的可分配数组和指针与C是不能互操作的,但TS 29113 Further Interoperability of Fortran with C通过ISO_Fortran_binding.h等使这些限制得以消除,遗憾的是目前gfotran还不能完全支持TS29113.
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-5-15 04:32

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表