编译器错误 C0509
信息: 不允许对运算符“__New”进行多次赋值
可能的错误原因:在一行代码中,赋值运算符“:=" 被多次调用 __New 操作员。
错误修正: 用 __New 运算符在单独的代码行中为每个指向动态分配的内存的指针。
例 484. 错误示例:
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: 不允许对操作员 '__NEW' 进行多次分配
错误修正:
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有关更多信息,请参阅: __NEW