You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将带save属性的局部target变量暴露到外部的Fortran代码是否合法?

Fortran代码合法性判定

核心结论

你提供的代码完全符合Fortran 2003及所有更高版本标准的要求,是合法代码,甚至在最早支持指针特性的Fortran 90标准下也合法。

判定依据

  • 标准明确规定,带有SAVE属性的过程内部局部变量,生命周期和整个程序的运行周期完全一致,不会在过程执行结束后被释放回收。
  • 只要被指针指向的target实体的生命周期尚未结束,对应的指针关联关系就合法有效。你代码里的internal_n显式声明了SAVE+TARGET属性,get_number函数执行结束后它的存储依旧保留,外层指针ptr指向它的关联关系全程有效,读写ptr的行为也完全符合标准要求。
  • 如果删除internal_n的SAVE属性,代码就会变成不符合标准的非法实现:无SAVE属性的过程局部变量在过程退出后生命周期立刻结束,此时返回的指针会变成悬空指针,属于标准未定义行为。

内容的提问来源于stack exchange,提问作者mcocdawc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 13:48:04