dealloc +%alloc()vs%realloc() - RPGLE

Lpp*_*Edd 0 pointers rpgle ibm-midrange

知道那ptr <> *null,两段代码功能相同吗?

dealloc(en) ptr;
ptr = %alloc(500);
Run Code Online (Sandbox Code Playgroud)

ptr = %realloc(ptr:500);
Run Code Online (Sandbox Code Playgroud)

Cha*_*les 6

没有.

%realloc()保存ptr指向的存储的当前值.

因此,如果没有足够的空间来扩大现有空间,那么为ptr返回相同的值.系统会将字节从原始空间复制到新空间.

从手册:
%REALLOC(重新分配存储)

返回指针指向的堆存储具有与ptr指向的堆存储相同的值.如果新长度长于旧长度,则额外存储未初始化.