%REALLOC (記憶域の再割り振り)

%REALLOC(ptr:num)

%REALLOC は、最初のパラメーターが指しているヒープ記憶域を変更して、2 番目のパラメーターに指定されている長さにします。戻されたポインターによって指し示されているヒープ・ストレージには、ptr によって指し示されているヒープ・ストレージと同じ値があります。 新しい長さが以前の長さより長い場合には、追加ストレージは初期化されません。

最初のパラメーターは基底ポインター値である必要があります。2 番目のパラメーターは、小数点以下の桁数がゼロである非浮動数値でなければなりません。指定される長さは、1 から 16776704 の範囲でなければなりません。

関数は割り振られる記憶域へのポインターを戻します。これはポインター と同じである場合も異なる場合もあります。 %REALLOC 関数が正常に終了した場合には、 第 1 オペランドで指定されていた元のポインター値は使用できません。

詳細については、メモリー管理命令を参照してください。

命令が正常に完了しなかった場合、例外 00425 または 00426 が出されます。

図 216. %REALLOC の例
 *..1....+....2....+....3....+....4....+....5....+....6....+....7...+....
  /FREE
   // Allocate an area of 200 bytes
   pointer = %ALLOC(200);
   // Change the size of the area to 500 bytes
   pointer = %REALLOC(pointer:500);
   // Using two different pointers:
   pointer2 = %REALLOC(pointer1:500);
   pointer1 = *NULL;;
   // The returned value was assigned to
   // "pointer2", a different variable
   // from the input pointer "pointer1".
   // In this case, the value of "pointer1"
   // is no longer valid, so "pointer1" must
   // be set to *NULL to avoid using the
   // old value.
 /END-FREE