Skip to main content

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 479. 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_IF


Für weitere Informationen siehe: __NEW