std::realloc
提供: cppreference.com
<tbody>
</tbody>
| ヘッダ <cstdlib> で定義
|
||
void* realloc( void* ptr, std::size_t new_size ); |
||
指定されたメモリ領域を再確保します。 メモリ領域は以前に std::malloc()、 std::calloc() または std::realloc() によって確保されていなければならず、まだ std::free() によって解放されていてはなりません。 そうでなければ、結果は未定義です。
再確保は以下のいずれかによって行われます。
a) 可能であれば、
ptr の指す既存の領域を拡大または縮小します。 領域の内容は新しいサイズと古いサイズの小さい方まで変更されずに残されます。 領域が拡大される場合、配列の新しい部分の内容は未定義です。b) サイズ
new_size バイトの新しいメモリブロックを確保し、新しいサイズと古いサイズの小さい方と同じサイズのメモリ領域をコピーし、古いブロックを解放します。十分なメモリがない場合、古いブロックは解放されず、ヌルポインタが返されます。
ptr がヌルポインタの場合、動作は std::malloc(new_size) の呼び出しと同じです。
new_size がゼロの場合、動作は処理系定義です。 ヌルポインタが返されるかもしれませんし (その場合、古いメモリブロックは解放されるかもしれませんし、されないかもしれません)、記憶域にアクセスするためには使用できない何らかの非ヌルなポインタが返されるかもしれません。
|
以下の関数はスレッドセーフであることが要求されます。
|