Fortran 板


LINE

编译後错误讯息: forrtl: severe (157): Program Exception - access violation 除错的结果,我认为跟记忆体使用限制有关,但不清楚原因,想请教板上的前辈 下面是我碰到的情形,我用简单的语法表示 ======================================= 程式1 可执行成功 ======================================= real(8) :: A(512,512,512) A = 1d0 call sub(512,512,512,A) A = A+A ======================================= 程式2 执行失败 ======================================= real(8) :: A(512,512,512) A = 1d0 call sub(511,511,511,A(1:511,1:511,1:511) A = A+A <-------在这步会出现错误讯息 ======================================= subroutine sub(n1,n2,n3,A) implict none integer,intent(in) :: n1,n2,n3 real(8),intent(in) :: A(n1,n2,n3) end subroutine 副程式本身并无任何作用 所以认为是呼叫副程式时,传入资料导致主程式记忆体空间出现问题 但不了解传入整个阵列A 与 部分阵列A(1:511,1:511,1:511) 因为我的理解,subroutine 是传送记忆体位置,并非传送值 为何後者会导致错误发生,希望有经验的前辈可以指教,谢谢 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.113.22.208
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Fortran/M.1448273296.A.D92.html
1F:→ noonee: 我不知道为何compile 出错 但是就算成功两个也是不一样的 11/23 23:23
2F:→ noonee: 啊 懂了 主程式里宣告了A的大小传给sub 11/23 23:24
3F:→ noonee: 但是sub里又重新宣告了他的大小 而且大小不一样 11/23 23:25
4F:→ noonee: 所以你要传递部份是可以的 但是需要另外写一个叫B 11/23 23:25
5F:→ noonee: B的大小要跟sub里宣告的一样 11/23 23:26
6F:→ noonee: 如果你是不想写死array的大小 那就要用allocatable 11/23 23:26
7F:→ noonee: 但是用allocatable的话 就只能用module传递 11/23 23:26
8F:→ noonee: 事实上这就是为何你去看一堆老程式 老是宣告一个很大的 11/23 23:27
9F:→ noonee: array 然後主副程式都用共一个parameter来宣告大小 11/23 23:28
主程式中 A 阵列其实是用 allocate 配置空间的 而 sub 的 A 阵列应该只是告知传入阵列的大小,不具备配置记忆体功能 不知我的理解是否错误? 在我测试例子当中,A阵列非常的大,如果缩小成 256^3 则不会有问题 所以我在猜想是不是 A(1:511,1:511,1:511)传入副程式时 这种部分阵列会而外再吃记忆体,导致记忆体不足? ※ 编辑: sin55688 (140.113.125.200), 11/24/2015 01:16:17
10F:→ rex0707: 我设A(11,11,11)这样的矩阵大小 两种方法都可以执行 11/24 01:26
11F:→ rex0707: 如果设成512 会显示记忆体不足 所以应该是记忆体不足所造 11/24 01:26
12F:→ rex0707: 成的问题 11/24 01:26
13F:→ blc: sub里的A阵列记忆体位置应该跟主程式的一样,所以就…… 11/24 17:16
14F:推 hiyiyi: 副程式的矩阵宣告用A(:,:,:),自动设定维度大小 11/26 21:01
15F:→ crazy10167: 8*512**3使用记忆体约1G,程式2的方法副程式又再吃1G, 12/12 22:41
16F:→ crazy10167: 你系统如果是32位元就会不够 12/12 22:41







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Boy-Girl站内搜寻

TOP