Skip to main content

SA0021: Trasferimento dell'indirizzo di una variabile temporanea

Recupera le assegnazioni di indirizzi di variabili temporanee (variabili nello stack) a variabili non temporanee.

Motivo: le variabili locali di una funzione o di un metodo vengono create nello stack ed esistono solo durante l'elaborazione della funzione o del metodo. Se un puntatore punta a una tale variabile dopo che il metodo o la funzione è stato elaborato, è possibile utilizzare questo puntatore per accedere alla memoria non definita o per accedere a una variabile errata in un'altra funzione. Questa situazione deve essere evitata in ogni caso.

Importanza: Alta

Esempio 33. Esempio
FUNCTION TempVarInFUNC : DWORD
VAR
    uiTemp : UINT;
END_VAR
TempVarInFUNC := ADR(uiTemp);    //SA0021
PROGRAM PLC_PRG
VAR
    dwTest : DWORD;
END_VAR
dwTest := TempVarInFUNC();

Uscita in Messaggi vista:

  • sa_icon_message.png SA0021: Trasporto dell'indirizzo della variabile temporanea al simbolo dell'ambito esterno