トップページ – C言語編 – 標準ライブラリのリファレンス(名前順)
トップページ – C言語編 – 標準ライブラリのリファレンス(ヘッダ別)
概要 |
メモリ領域を確保し直す |
|
ヘッダ |
||
形式 |
void* realloc(void* ptr, size_t size); |
|
引数 |
ptr |
動的に確保済みの領域を指すポインタ。あるいは、ヌルポインタ。 |
size |
新しく確保する領域の大きさ。 |
|
戻り値 |
再確保された領域の先頭を指すポインタ。ただし、このポインタは以前確保されていてメモリ領域と同じメモリアドレスを持つ可能性はある。 |
|
詳細 |
malloc関数、calloc関数、realloc関数のいずれかで確保された領域を指定し、再度確保直す。元の領域にあった内容は、新しい領域にコピーされ、元の領域は解放される。 引数ptr がヌルポインタの場合は、malloc関数と同じ動作になる。 引数size が 0 の場合の動作は処理系定義であり、戻り値としてはヌルポインタか、何らかのヌルでないポインタが返される。ヌルでないポインタが返されたとしても、そのポインタを使ったアクセスを行ってはならない1。 確保された領域が不要になったら、free関数で解放(システムへ返却)できる。 C95以前の規格では、引数size に 0 を指定した場合には、free関数と同じ動作になった。2 |
|
注意 |
システムがメモリ領域を管理するための追加の領域が必要なため、実際に割り当てられる大きさは、size を超える可能性がある。 |
|
使用例 |
実行結果:
|
|
関連 |
メモリの動的な確保に関わる標準ライブラリ関数として、他に malloc関数、calloc関数がある。いずれにしても、解放は free関数で行う。 |
|
解説章 |
return 0;
を削除(C言語編全体でのコードの統一)≪さらに古い更新履歴を展開する≫
Programming Place Plus のトップページへ