Anzeige:
Ergebnis 1 bis 2 von 2

Thema: Fortran: Array dyn. alloc

  1. #1
    Registrierter Benutzer
    Registriert seit
    29.06.2009
    Beiträge
    146

    Fortran: Array dyn. alloc

    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.

  2. #2
    Registrierter Benutzer Avatar von BlueJay
    Registriert seit
    27.08.2004
    Beiträge
    825
    Hallo DaPhil,

    leider schreibst Du nicht, welche ForTran-Version Du verwendest. Bis ForTran77 musstest Du raten, wie die maximale Größe des Arrays sein wird, und so dimensionieren.

    Gruß,
    Ulrike
    Eigentlich ganz einfach, wenn man's weiss!

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •