名前空間
変種

std::realloc

提供: cppreference.com
< cpp | memory | c
 
 
ユーティリティライブラリ
汎用ユーティリティ
日付と時間
関数オブジェクト
書式化ライブラリ (C++20)
(C++11)
関係演算子 (C++20で非推奨)
整数比較関数
(C++20)
スワップと型操作
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
一般的な語彙の型
(C++11)
(C++17)
(C++17)
(C++17)
(C++17)

初等文字列変換
(C++17)
(C++17)
 
動的メモリ管理
スマートポインタ
(C++11)
(C++11)
(C++11)
(C++17未満)
(C++11)
アロケータ
メモリリソース
未初期化記憶域
ガベージコレクションサポート
その他
(C++20)
(C++11)
(C++11)
C のライブラリ
低水準のメモリ管理
 
<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 がゼロの場合、動作は処理系定義です。 ヌルポインタが返されるかもしれませんし (その場合、古いメモリブロックは解放されるかもしれませんし、されないかもしれません)、記憶域にアクセスするためには使用できない何らかの非ヌルなポインタが返されるかもしれません。

以下の関数はスレッドセーフであることが要求されます。