Compilerfehler C0509
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 484. 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
Meldung:
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_IFFür weitere Informationen siehe: __NEW