.

编译器错误 C0509

.
.

消息:不允许为运算符‘__New’进行多次分配

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

错误更正:使用__New运算符在指向单独动态代码的每个指针的单独一行代码中对内存分配进行编程。

.

.错误范例:

PROGRAM PLC_PRG
VAR
    pbAlpha : POINTER TO BYTE; // 键入指向Alpha的指针
    pbBeta: POINTER TO BYTE;    // 键入指向Beta的指针
    xInit : BOOL := TRUE;
    xDelete : BOOL;
END_VAR

IF (xInit) THEN
    pbBeta := pbAlpha := __NEW(BYTE); // 错误的内存分配代码
END_IF

pbBeta := pbAlpha := 16#01;

IF (xDelete) THEN 
    __DELETE(pbAlpha); // 释放指针的内存
END_IF

--> C0509: 不允许为运算符‘__New’进行多次分配
 

.错误更正:


PROGRAM PLC_PRG
VAR
    pbAlpha : POINTER TO BYTE; // 指向Alpha的指针
    pbBeta: POINTER TO BYTE;    //指向Beta的指针
    xInit : BOOL := TRUE;
    xDelete : BOOL;
END_VAR

IF (xInit) THEN
    pbAlpha := __NEW(BYTE); // 为Alpha分配内存
    pbBeta :=  __NEW(BYTE); // 为Beta分配内存
END_IF

pbBeta := pbAlpha := 16#01; // 多重分配

IF (xDelete) THEN 
    __DELETE(pbAlpha); // 释放指针的内存
END_IF