大家好,我的程序里面有这么一段代码:
[Fortran] 纯文本查看 复制代码 do j=1,nt
! csum=G_0t(j)
do ic0=1,ndims
! CP0(j,ic0)=CP0(j,ic0)*csum
CP0(j,ic0)=CP0(j,ic0)*G_0t(j)
enddo
enddo
其中 nt 是比较大的数,比如,640000。以上的代码可以 run。但是如果把上面的注释去掉,像下面这样:
[Fortran] 纯文本查看 复制代码 do j=1,nt
csum=G_0t(j)
do ic0=1,ndims
CP0(j,ic0)=CP0(j,ic0)*csum
! CP0(j,ic0)=CP0(j,ic0)*G_0t(j)
enddo
enddo
想来这样会减少对 G_0t 这个数组的内存的访问。但是这样会出现运行时错误,说 segmentation fault。
看起来这两种方式对内存的处理是不一样的。有没有高手帮我解释一下?
谢谢! |