ReallocMemory
関数です。新しいポインタ値を返します。引数は変更されません。ReallocMem
代わりに呼び出すか、関数の結果を使用します。
ReallocMem(Node, SizeOf(Node^));
また
Node := ReallocMemory(Node, SizeOf(Node^));
これらの関数のいずれかがメモリのブロックをインプレースでサイズ変更できない場合、新しいメモリを割り当て、古いコンテンツを新しいバッファにコピーしてから、元のバッファを解放します。結果を無視するReallocMemory
と、新しいポインターが破棄され、古い古いポインターがNode
変数に保持されます。古いポインタを継続して使用すると、アクセス違反やその他の予測できない動作が説明されます。
C ++互換性のために、これらの関数には2つのバージョンがあります。C ++には、Delphiの「コンパイラマジック」がありません。これにより、コンパイラは、任意のポインタ型ReallocMem
を受け入れて変更する単一の関数を持つことができます。
このReallocMemory
関数はC++関数のように見えますrealloc
が、まったく同じように動作するわけではありません。そのため、入力変数を関数の戻り値で直接上書きしても安全です。再割り当てが失敗すると、関数は、のように例外をスローします。ReallocMem
ここで、realloc
はnullポインタを返します。