回 帖 发 新 帖 刷新版面

主题:问一个关于动态数组释放的问题

主程序中有一个大循环,每循环一次需要调用一个子程序,子程序中使用了很多动态数组,并且有些动态数组还要带回到子程序进一步使用。

现在遇到的问题很诡异,原来的程序可以编译并计算,可是在修改了几句主程序中和动态数组完全没关系的语句后,计算时提示 allocatable array has already been allocated. 

自己检查明明使用完了的动态数组我都 deallocate 了啊,并且如果是重复分配的话,为什么在做修改之前程序明明是可以计算的呢?

想不通啊想不通。请问哪位遇到过相似的错误提示不? 谢了

回复列表 (共2个回复)

沙发

可以写个简单的、但形式与逻辑上与你要调试的程序类似的小程序,跑下是否仍然无法计算。考虑在大循环中加入 I/O 操作(如 print *,)试试,但感觉可能没什么帮助。:P

另,循环中反复 allocate 与 deallocate,就要反复询问自己有无必要了,程序结构设计可能欠妥。

板凳

这问题啊,你DEBUG单步,跳函数,直到找到问题所在的行为止咯。

我来回复

您尚未登录,请登录后再回复。点此登录或注册