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