Skip to main content

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:

  • sa_icon_message.png SA0039: Mögliche Null-Pointer-Dereferenzierung 'ptiVar2^'

  • sa_icon_message.png SA0039: Mögliche Null-Pointer-Dereferenzierung 'ptiVar3^'