提示! 由于编译原因编译器的版本必须 >= 3.3.2.0. |
__DELETE 操作分配对象内存此内存是之前通过 ⇘ “__NEW” 操作创建的。 __DELETE 没有返回变量并且经过操作之后操作数将会被设置为 0 。
注意选项“动态内存分配”必须在应用程序 ⇘ “动态内存设置”中激活!
语法:
__DELETE (<指针>)
如果pointer是一个指向功能块的指针,那么在指针被设置为NULL之前定义的方法 FB_Exit 将会被调用。
功能块示例:
FUNCTION_BLOCK FBDynamic
VAR_INPUT
in1, in2 : INT;
END_VAR
VAR_OUTPUT
out : INT;
END_VAR
VAR
test1 : INT := 1234;
_inc : INT := 0;
_dut : POINTER TO DUT;
neu : BOOL;
END_VAR
out := in1 + in2;
METHOD FB_Exit : BOOL
VAR_INPUT
bInCopyCode : BOOL;
END_VAR
__Delete(_dut);
METHOD FB_Init : BOOL
VAR_INPUT
bInitRetains : BOOL;
bInCopyCode : BOOL;
END_VAR
_dut := __NEW(DUT);
METHOD INC : INT
VAR_INPUT
END_VAR
_inc := _inc + 1;
INC := _inc;
PLC_PRG(PRG)
VAR
pFB : POINTER TO FBDynamic;
bInit: BOOL := TRUE;
bDelete: BOOL;
loc : INT;
END_VAR
IF (bInit) THEN
pFB := __NEW(FBDynamic);
bInit := FALSE;
END_IF
IF (pFB <> 0) THEN
pFB^(in1 := 1, in2 := loc, out => loc);
pFB^.INC();
END_IF
IF (bDelete) THEN
__DELETE(pFB);
END_IF