次の方法で共有


_recalloc

realloc と calloc の組み合わせです。メモリの配列を再割り当てし要素を 0 に初期化します。

void *_recalloc( 
   void *memblock
   size_t num,
   size_t size 
);

パラメーター

  • memblock
    既に割り当てられたメモリ ブロックへのポインター。

  • num
    要素の数。

  • size
    各要素のバイト単位の長さ。

戻り値

_recalloc が再割り当てされる場合 (移動) されるメモリ ブロックの void のポインターを返します。

特定のサイズにブロックを配置できる使用可能なメモリがない場合ブロックは変更されずNULL が返されます。

要求されたサイズがゼロの場合memblock が指すブロックが解放されます。; 戻り値は NULL でmemblock は解放済みのブロックのポインターを保持されます。

適切にどの型のオブジェクトを格納するために配置されることが保証されるストレージ領域の戻り値へのポインター。void 以外の型へのポインターを取得するには戻り値の型キャストを使用してください。

解説

現在の関数の recalloc 割り当てられたメモリ ブロックのサイズ。メモリ ブロックの先頭への memblock の引数のポインター。memblock が NULL 場合_recalloc は calloc と同じように動作しnum * size バイトの新しいブロックを割り当てます。各要素は0 に初期化されます。memblock が NULL であるcallocmallocまたは realloc への前の呼び出しによって返されるポインターのようになります。

新しいメモリ ブロックが新しい場所にあるため_recalloc によって返されるポインターは memblock の引数で渡されたポインターであることが保証されます。

_recalloc は ENOMEM にメモリ割り当てに失敗するか要求されたメモリの量が _HEAP_MAXREQ を超えた場合 errno を設定します。この変更およびそのほかのエラー コードの詳細についてはerrno、_doserrno、_sys_errlist、および _sys_nerr を参照してください。

recalloc の呼び出し realloc C++ _set_new_mode の関数を新しいハンドラー モードを設定するために使用します。新しいハンドラー モードはエラーが発生した場合realloc が _set_new_handler に設定した新しいハンドラー ルーチンを呼び出すかどうかを示します。既定ではrealloc にメモリを割り当てる失敗の new ハンドラー ルーチンを呼び出していません。同じ理由で失敗すると new の演算子は_recalloc がメモリを割り当てるとrealloc が新しいハンドラー ルーチンと同じ方法で呼び出すように既定の動作をオーバーライドできます。既定値をオーバーライドするにはを呼び出します。

_set_new_mode(1)

高速 NEWMODE.OBJ のプログラムまたはリンクで。

アプリケーションが C ランタイム ライブラリのデバッグ バージョンとリンクしたとき現在 recalloc は _recalloc_dbg に解決されます。詳細についてはヒープがデバッグ中にマネージ方法についてはCRT デバッグ ヒープ を参照してください。

_recalloc はグローバル変数を変更しないように関数が保証できない返されたポインターが JIT エイリアス化したことを意味するのマークされた __declspec(noalias) と __declspec(restrict) です。詳細についてはnoalias制限します。 を参照してください。

必要条件

ルーチン

必須ヘッダー

_recalloc

<stdlib.h> および <malloc.h>

互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。

同等の .NET Framework 関数

該当なし標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。

参照

関連項目

メモリ割り当て

_recalloc_dbg

_aligned_recalloc

_aligned_offset_recalloc

free

概念

リンク オプション