Ermittelt Zuweisungen von Adressen von temporären Variablen (Variablen auf dem Stack) zu nicht-temporären Variablen.
Begründung: Lokale Variablen einer Funktion oder einer Methode werden auf dem Stack angelegt und existieren nur während der Abarbeitung der Funktion oder Methode. Wenn ein Pointer nach Abarbeitung der Methode oder Funktion auf eine solche Variable zeigt, dann kann man über diesen Pointer in undefinierten Speicher greifen, oder auf eine falsche Variable in einer anderen Funktion zugreifen. Diese Situation ist in jedem Fall zu vermeiden.
Wichtigkeit: Hoch
Beispiel
FUNCTION TempVarInFUNC : DWORD VAR uiTemp : UINT; END_VAR TempVarInFUNC := ADR(uiTemp); // SA0021 PROGRAM PLC_PRG VAR dwTest : DWORD; END_VAR dwTest := TempVarInFUNC(); --> SA0021: Adresse einer temporären Variable wird auf ein Symbol übertragen, das außerhalb des gültigen Bereichs liegt