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

时间:2017-05-25 14:07:41

标签: pointers ibm-midrange rpgle

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

dealloc(en) ptr;
ptr = %alloc(500);

ptr = %realloc(ptr:500);

1 个答案:

答案 0 :(得分:6)

没有

%realloc()保存ptr。

指向的存储的当前值

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

从手册:
%REALLOC (Reallocate Storage)

  

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