Variable Größe von arrays in Fortran, ohne Allocate()

Gibt es eine Möglichkeit zu erstellen, die variable Größe der arrays in Fortran auf dem Stapel? Allocate() funktioniert bei mir nicht, weil es Orte, die das array auf dem heap. Dies kann dazu führen, Probleme mit der Parallelisierung (siehe meine andere Frage:
OpenMP: eine schlechte Leistung heap-arrays (stack arrays funktionieren) ). Natürlich, einige smart memory management geben würde, einen Weg um das problem, aber die Speicherverwaltung in Fortran albern klingt.

Grundsätzlich, ich bin auf der Suche nach einem Fortran-Entsprechung der folgende in C:

scanf("%d", N);
int myarray[N];

Erneut wiederhole: ich will NICHT

Integer, PARAMETER :: N=100
Integer, Dimension(N) :: myarray

denn diese bestimmt die array-Größe zur compile-Zeit. Weder möchte ich

Integer, Dimension(:), Allocatable :: myarray
read(*,*) N
Allocate(myarray(1:N))

weil es Orte, die das array auf dem heap.

Hilfe sehr geschätzt. Ich war sehr zufrieden mit Belegbar arrays bis zu meiner letzten Begegnung mit dem problem in der Frage, die oben zitiert werden. Wenn es eine negative Antwort auf diese Frage wäre ich sehr dankbar, ein link auf die Quelle.

Edit: siehe Kommentar zu M. S. B. ' s Antwort. Ein eleganter Weg, dies zu tun, ist erst möglich geworden, in Fortran 2008, und es ist getan in einer block konstruieren.

InformationsquelleAutor der Frage drlemon | 2011-07-07

Schreibe einen Kommentar