Skip to main content

Errore del compilatore C0509

Messaggio: Non sono consentite assegnazioni multiple per l'operatore '__New'

Possibile causa dell'errore: In una riga di codice, l'operatore di assegnazione ":=" viene chiamato più volte con il __New operatore.

Correzione dell'errore: Programmare l'allocazione della memoria con il __New operatore in una riga di codice separata per ogni puntatore che punta alla memoria allocata dinamicamente.

Esempio 479. Esempio dell'errore:
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

Messaggio:

C0509: assegnazioni multiple per l'operatore '__NEW' non consentite

Correzione dell'errore:

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


Per ulteriori informazioni, vedere: __NEW