Fortran Coder

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

[Module] 模块内子程序使用动态数组的问题

[复制链接]

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

QQ
楼主
发表于 2017-3-6 10:08:58 | 显示全部楼层
这是动态数组多次分配了。如果你的 cal_tracer 函数被多次调用的话,就会这样。

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

QQ
沙发
发表于 2017-3-6 10:33:40 | 显示全部楼层
1. 因为子程序内部的数组,在子程序返回的时候,会自动被 deallocate
2. 是的,你加了判断,就避免了重复分配。但是会有一个问题,如果你第二次想要分配的大小,和你第一次分配的不一样。
那么就会造成,你以为分配了,就不再进行分配。但是大小却不一样。
3. 所以,最佳的方法是,在合适的位置,对其进行 deallocate。
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-5-4 02:57

Powered by Tencent X3.4

© 2013-2024 Tencent

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