假設A
和I
是整數類型的維數爲N的數組。一般而言,I
是整數1:N
的置換。我想要做A(1:N) = A(I(1:N))
。對於小型N
這工作正常,但當N
很大時,我得到了Segmentation fault
。 這裏是什麼我確實是一個例子:Fortran中使用數組索引的分段錯誤
integer N
integer,dimension(:),allocatable::A,I
N = 10000000
allocate(A(N))
allocate(I(N))
A = (/ (i,i=1,N) /)
I = (/ (N-i+1,i=1,N) /)
A(1:N) = A(I(1:N))
有沒有更好的方式來做到這一點?
在你的情況''我'是一個數組,你使用它作爲循環變量?這甚至有可能嗎? – chw21
對於什麼是值得的,在隱含的do循環中使用專用的'ii'變量,即使對於'N' = 100M(gfortran v.5.4),代碼也能正常執行。 – chw21
爲了明確這一點,Fortran不區分大小寫,所以'I'和'i'指向相同的變量。 –