次の方法で共有


CoTaskMemRealloc 関数 (combaseapi.h)

以前に割り当てられたタスク メモリ ブロックのサイズを変更します。

構文

LPVOID CoTaskMemRealloc(
  [in, optional] LPVOID pv,
  [in]           SIZE_T cb
);

パラメーター

[in, optional] pv

再割り当てするメモリ ブロックへのポインター。 「解説」で説明されているように、このパラメーターには NULL を指定できます。

[in] cb

再割り当てするメモリ ブロックのサイズ (バイト単位)。 「解説」で説明されているように、このパラメーターには 0 を指定できます。

戻り値

関数が成功すると、再割り当てされたメモリ ブロックが返されます。 それ以外の場合は、 NULL を返します。

注釈

この関数は、 IMalloc::Realloc と同じ方法で、以前に割り当てられたメモリ ブロックのサイズを変更します。 CoTaskMemRealloc を呼び出す前に、OLE アロケーターへのポインターを取得するために CoGetMalloc 関数を呼び出す必要はありません。

pv パラメーターは、メモリ ブロックの先頭を指します。 pvNULL の場合、CoTaskMemRealloc 関数と同じ方法でしいメモリ ブロックが割り当てられます。 pvNULL でない場合は、CoTaskMemAlloc の以前の呼び出しによって返されるポインターである必要があります。

cb パラメーターは、新しいブロックのサイズを指定します。 新旧のサイズのうち、小さい方のブロックの内容は変更されませんが、新しいブロックの場所は異なる場合があります。 新しいブロックは別のメモリ位置に置くことができるため、 CoTaskMemRealloc によって返されるポインターが pv 引数を介して渡されるポインターであるとは限りません。 pvNULL ではなく cb が 0 の場合、pv が指すメモリは解放されます。

CoTaskMemRealloc は、再割り当てされた (および移動される可能性がある) メモリ ブロックへの void ポインターを返します。 size が 0 で buffer 引数が NULL でない場合、またはブロックを指定したサイズに拡張するのに十分なメモリがない場合、戻り値は NULL です。 最初のケースでは、元のブロックが解放されます。2 番目のケースでは、元のブロックは変更されません。

戻り値で指し示される記憶域は、どの型のオブジェクトを格納する場合でも適切なアラインメントが保証されます。 void 以外の型へのポインターを取得するには、戻り値に型キャストを使用します。

要件

要件
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリ |UWP アプリ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリ |UWP アプリ]
対象プラットフォーム Windows
ヘッダー combaseapi.h (Objbase.h を含む)
Library Ole32.lib
[DLL] Ole32.dll

こちらもご覧ください

CoTaskMemAlloc

CoTaskMemFree

IMalloc::Realloc