SA0039: Mögliche Null-Pointer-Dereferenzierung
Ermittelt Codestellen an denen möglicherweise ein Null-Pointer dereferenziert wird.
Begründung: Ein Pointer sollte vor jeder Dereferenzierung daraufhin geprüft werden, ob er ungleich 0 ist. Ansonsten kann es zu einer Zugriffsverletzung zur Laufzeit kommen.
Wichtigkeit: Hoch
Beispiel 114. Beispiel
PROGRAM PLC_PRG
VAR
ptiVar1:POINTER TO INT;
ptiVar2:POINTER TO INT;
ptiVar3:POINTER TO INT;
iVar:INT;
iCount :INT;
iCondition: INT;
END_VAR
iCount := iCount + INT#1; ptiVar1 := ADR(iVar); ptiVar1^ := iCondition; // OK - valid reference ptiVar2^ := iCondition; // SA0039 - null pointer dereferenciation iVar := ptiVar3^; // SA0039 - null pointer dereferenciation
Ausgabe unter Ansicht Meldungen:
SA0039: Mögliche Null-Pointer-Dereferenzierung 'ptiVar2^'
SA0039: Mögliche Null-Pointer-Dereferenzierung 'ptiVar3^'