Hallo,
fange gerade mit Fortran an, berufsbedingt. Ich moechte ein Array, dessen Dimension ich vorher noch berechnen muss. Habe mir also gedacht:
Code:
program main
  
  implicit none
  complex*16, allocatable, dimension(:, :) :: sol

  ! berechne dimensionen...
  n = 2  
  nSol = 1001

  allocate(sol(n + 1, nSol))

  call functionSoUndSo(sol)

  deallocate(sol)
Lasse ich mir mein Array sol mal per print ausgeben (nach dem allocate natuerlich), erhalte ich auch ein Array mit lauter nullen, Dimensionen sind richtig. Stecke ich es dann in meine Funktion (besser subroutine), bekomme ich eine Monsterfehlermeldung:

*** glibc detected *** ./a.out: free(): invalid next size (normal): 0x09f47018 ***
======= Backtrace: =========
/lib/libc.so.6(+0x6c501)[0x293501]
/lib/libc.so.6(+0x6dd70)[0x294d70]
/lib/libc.so.6(cfree+0x6d)[0x297e5d]
./a.out[0x8057b6b]
./a.out[0x8049f82]
./a.out[0x8049cb1]
/lib/libc.so.6(__libc_start_main+0xe7)[0x23dce7]
./a.out[0x8049bc1]
======= Memory map: ========
00209000-00225000 r-xp 00000000 08:02 659488 /lib/ld-2.12.1.so
00225000-00226000 r--p 0001b000 08:02 659488 /lib/ld-2.12.1.so
00226000-00227000 rw-p 0001c000 08:02 659488 /lib/ld-2.12.1.so
00227000-0037e000 r-xp 00000000 08:02 659491 /lib/libc-2.12.1.so
0037e000-00380000 r--p 00157000 08:02 659491 /lib/libc-2.12.1.so
00380000-00381000 rw-p 00159000 08:02 659491 /lib/libc-2.12.1.so
00381000-00384000 rw-p 00000000 00:00 0
0093f000-00959000 r-xp 00000000 08:02 654140 /lib/libgcc_s.so.1
00959000-0095a000 r--p 00019000 08:02 654140 /lib/libgcc_s.so.1
0095a000-0095b000 rw-p 0001a000 08:02 654140 /lib/libgcc_s.so.1
00bfa000-00c1e000 r-xp 00000000 08:02 659495 /lib/libm-2.12.1.so
00c1e000-00c1f000 r--p 00023000 08:02 659495 /lib/libm-2.12.1.so
00c1f000-00c20000 rw-p 00024000 08:02 659495 /lib/libm-2.12.1.so
00e22000-00e23000 r-xp 00000000 00:00 0 [vdso]
00ef6000-00ef8000 r-xp 00000000 08:02 659494 /lib/libdl-2.12.1.so
00ef8000-00ef9000 r--p 00001000 08:02 659494 /lib/libdl-2.12.1.so
00ef9000-00efa000 rw-p 00002000 08:02 659494 /lib/libdl-2.12.1.so
08048000-080ad000 r-xp 00000000 00:17 81920899 /socrates/hlohomes/springep/Dokumente/a.out
080ad000-080b1000 rw-p 00064000 00:17 81920899 /socrates/hlohomes/springep/Dokumente/a.out
080b1000-080b5000 rw-p 00000000 00:00 0
09f47000-09f68000 rw-p 00000000 00:00 0 [heap]
b7600000-b7621000 rw-p 00000000 00:00 0
b7621000-b7700000 ---p 00000000 00:00 0
b778b000-b778d000 rw-p 00000000 00:00 0
b77a7000-b77a9000 rw-p 00000000 00:00 0
bf889000-bf8aa000 rw-p 00000000 00:00 0 [stack]
Abgebrochen

Ich hoffe wirklich sehr dass mir da jemand helfen kann... Wenn ich die Dimension per Hand eingebe, also kein allocatable array mache, funtioniert es auch wunderbar.