Fortran 多线程并行 double free or corruption

错误信息

double free or corruption (out): 0x00000000011abe70 ***

问题分析

基本上根据题目判定,类型没得跑,内存问题。

所以会有几种情况:

1.    内存重复释放,看程序中是否释放了两次空间(一般不会是这种情况,毕竟。。太明显)

2.    内存越界。(大部分是这种情况,如果你使用了数组,或者开辟了空间,但是在循环的时候越界了,就会出现这种情况)
--------------------- 
作者:桥路丶 
来源:CSDN 
原文:https://blog.csdn.net/qq_33876553/article/details/79609321 
版权声明:本文为博主原创文章,转载请附上博文链接!

该问题还有可能是动态数组未初始化引起的,或者指针free之后没有变成NULL状态,此外在大规模并行时容易出现上述问题,此时需要细心检查deallocate或者allocate是否重复调用

问题解决

于gfortran 或 mpif90编译器 在编译时添加边界检查选项 -fbounds-check 运行之后会提示数组溢界的详细信息,示例如下:

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值