IMalloc::Realloc メソッド (objidl.h)
以前に割り当てられたメモリ ブロックのサイズを変更します。
構文
void * Realloc(
[in] void *pv,
[in] SIZE_T cb
);
パラメーター
[in] pv
再割り当てするメモリ ブロックへのポインター。 このパラメーターは、以下の「解説」セクションで説明するように NULL にすることができます。
[in] cb
再割り当てするメモリ ブロックのサイズ (バイト単位)。 このパラメーターは、以下の「解説」セクションで説明するように、0 にすることができます。
戻り値
メソッドが成功した場合、戻り値はメモリの再割り当てブロックへのポインターです。 それ以外の場合は NULL です。
注釈
このメソッドはメモリ ブロックを再割り当てしますが、その内容が初期化される保証はありません。 そのため、呼び出し元は、その後メモリを初期化する役割を担います。 アラインメントとメンテナンス情報に必要な領域が原因で、割り当てられたブロックが cb バイトを超える場合があります。
pv 引数は、ブロックの先頭を指します。 pv が NULL の場合、Realloc は IMalloc::Alloc と同じ方法で新しいメモリ ブロックを割り当てます。 pv が NULL でない場合は、Alloc の以前の呼び出しによって返されるポインターである必要があります。
cb 引数は、新しいブロックのサイズをバイト単位で指定します。 新旧のサイズのうち、小さい方のブロックの内容は変更されませんが、新しいブロックの場所は異なる場合があります。 新しいブロックは別のメモリ位置に置くことができるため、 Realloc によって返されるポインターが pv 引数を介して渡されるポインターであるとは限りません。 pv が NULL でなく、cb が 0 の場合、pv が指すメモリは解放されます。
Realloc は、メモリの再割り当て (および場合によっては移動) ブロックへの void ポインターを返します。 サイズが 0 で buffer 引数が NULL でない場合、またはブロックを指定したサイズに拡張するのに十分なメモリがない場合、戻り値は NULL です。 最初のケースでは、元のブロックが解放されます。2 つ目では、元のブロックは変更されません。
戻り値で指し示される記憶域は、どの型のオブジェクトを格納する場合でも適切なアラインメントが保証されます。 void 以外の型へのポインターを取得するには、戻り値に型キャストを使用します。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | objidl.h (ObjIdl.h を含む) |