Skip to main content

编译器错误 C0509

信息: 不允许对运算符“__New”进行多次赋值

可能的错误原因:在一行代码中,赋值运算符“:=" 被多次调用 __New 操作员。

错误修正: 用 __New 运算符在单独的代码行中为每个指向动态分配的内存的指针。

479. 错误示例:
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