Errore Fortran: Arguments to MOVE_ALLOC must have same type (Trasferimento Allocazione Errato)
La subroutine intrinseca MOVE_ALLOC(FROM, TO) richiede che i due array ALLOCATABLE abbiano identico tipo, kind e numero di dimensioni (rango).
Categoria
Articoli tecnici organizzati per gruppo funzionale.
La subroutine intrinseca MOVE_ALLOC(FROM, TO) richiede che i due array ALLOCATABLE abbiano identico tipo, kind e numero di dimensioni (rango).
In un'assegnazione tra array interi 'A = B' o operazioni vettoriali, le dimensioni e la forma (shape) dei due array devono essere identiche a meno che A non sia un array allocatable a riallocazione automatica (F2003).
Gli array 'assumed-size' ('A(*)') non consentono di determinare la dimensione totale con la funzione SIZE(); tentare di eseguire operazioni per intero array ('B = A') genera errore di compilazione.
Introdotto in Fortran 2008: un puntatore dichiarato con attributo 'CONTIGUOUS' non può essere associato a sezioni di array non contigue in memoria (es. 'arr(1:100:2)').
Il target associato al puntatore tramite 'ptr => target' è stato deallocato o è uscito dallo scope; il puntatore rimane penzolante causando lettura o scrittura in memoria corrotta.
Tutti gli elementi di un array constructor di caratteri '[ "abc", "defghi" ]' devono avere identica lunghezza; richiede l'uso della specifica di tipo esplicita '[ CHARACTER(len=6) :: "abc", "defghi" ]'.
La funzione intrinseca RESHAPE tenta di rimodellare un array sorgente con meno elementi rispetto al volume richiesto dalla forma target; è necessario fornire il vettore di riempimento PAD.
La richiesta di allocazione di un array di dimensioni elevate fallisce per insufficienza di memoria fisica o virtuale; l'uso della clausola 'ALLOCATE(..., STAT=istat)' consente di intercettare l'errore senza crash.