Meldung: Mehrfachzuweisungen sind für Operator '__New' nicht erlaubt
Mögliche Fehlerursache: Innerhalb einer Codezeile wird mehrfach der Zuweisungsoperator ":=
" zusammen mit dem __New
-Operator aufgerufen.
Fehlerbehebung: Programmieren Sie für jeden Pointer, der auf einen dynamisch allozierten Speicher
zeigt, die Speicherallozierung mit dem __New
-Operators in einer separaten Codezeile.
Beispiel für den Fehler:
PROGRAM PLC_PRG VAR pbAlpha : POINTER TO BYTE; // Typed pointer to Alpha pbBeta: POINTER TO BYTE; // Typed pointer to Beta xInit : BOOL := TRUE; xDelete : BOOL; END_VAR IF (xInit) THEN pbBeta := pbAlpha := __NEW(BYTE); // Incorrect code for memory allocation END_IF pbBeta := pbAlpha := 16#01; IF (xDelete) THEN __DELETE(pbAlpha); // Frees memory of pointer END_IF --> C0509: Mehrfachzuweisungen sind für Operator '__NEW' nicht erlaubt
Fehlerbehebung:
PROGRAM PLC_PRG VAR pbAlpha : POINTER TO BYTE; // Pointer to Alpha pbBeta: POINTER TO BYTE; // Pointer to Beta xInit : BOOL := TRUE; xDelete : BOOL; END_VAR IF (xInit) THEN pbAlpha := __NEW(BYTE); // Allocates memory for Alpha pbBeta := __NEW(BYTE); // Allocates memory for Beta END_IF pbBeta := pbAlpha := 16#01; // Multiple assignment IF (xDelete) THEN __DELETE(pbAlpha); // Frees memory of pointer END_IF