Fortran Coder

标题: 关于module里面动态数组的问题 [打印本页]

作者: 513981387    时间: 2019-3-12 11:07
标题: 关于module里面动态数组的问题
在编写一个二维欧拉求解器,使用的是VS2017和IVF。

主程序开头使用module,里面将如下变量声明为动态数组。

然后读取网格文件,得到单元数为 ncells

然后在子程序initialize 里面,给动态数组分配时候就出现了问题,编译之后显示的错误如下

请问这是什么原因,纯粹自学,在书里面也没有讲到module 和 动态数组 搭配使用的注意事项

error.png (34.49 KB, 下载次数: 249)

报错

报错

allocate.png (30.41 KB, 下载次数: 257)

子程序initialize

子程序initialize

module.png (15.82 KB, 下载次数: 250)

主程序module

主程序module

作者: li913    时间: 2019-3-12 17:33
多次对同一动态数组进行分配。你可以 分配-释放-分配-释放,但不能 分配-分配-
作者: 513981387    时间: 2019-3-12 19:17
li913 发表于 2019-3-12 17:33
多次对同一动态数组进行分配。你可以 分配-释放-分配-释放,但不能 分配-分配- ...

但是我的整个程序里面,这是第一次分配数组啊,在这之前没有使用过allocate的命令,为什么会对同一数组多次分配呢

作者: vvt    时间: 2019-3-13 07:08
本帖最后由 vvt 于 2019-3-13 07:10 编辑
513981387 发表于 2019-3-12 19:17
但是我的整个程序里面,这是第一次分配数组啊,在这之前没有使用过allocate的命令,为什么会对同一数组多 ...

这种问题,归根结底,是“程序的执行流程超出了你的预期”
往往,你认为是“第一次”,但由于某些意料之外的因素,导致“你认为的并不是你认为的”

你可以在所有分配语句上下断点,然后跟踪调试一下。看看是否“真的”是第一次。

别人没法代劳,毕竟,我们只有看到很小一部分源代码。
如果你自己排查有困难,代码又不涉密。可以上传全部代码,如果有输入文件,屏幕输入,也一并上传说明。

作者: 513981387    时间: 2019-3-13 14:19
vvt 发表于 2019-3-13 07:08
这种问题,归根结底,是“程序的执行流程超出了你的预期”
往往,你认为是“第一次”,但由于某些意料之外 ...

问题找到了,谢谢,确实是之前有一个子程序包含了数组分配的命令,不过因为不是自己写的子程序所以忽略了,感谢!




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2