🔧 標準ライブラリ ・ stdlib.h ・ C89
realloc の使い方void *realloc(void *ptr, size_t size);
既に確保済みのメモリ領域のサイズを変更する。拡張・縮小いずれも可能で、内容は元のサイズ分だけ保持される。戻り値のアドレスが元のポインタと変わることがある点に注意する。 縮小方向のreallocでは失敗しないのが一般的だが、拡大方向では別のアドレスへ移動されることがある。
#include <stdlib.h>
#include <stdio.h>
int main(void) {
int *p = malloc(2 * sizeof(int));
int *tmp = realloc(p, 4 * sizeof(int));
if (tmp) {
p = tmp;
free(p);
}
return 0;
}
⚠️ 戻り値を元のポインタ変数へ直接代入すると、失敗時(NULL)に元のポインタを失いメモリリークする。必ず一時変数で受ける。
アプリの関数リファレンスで引く(無料・登録不要) 関数一覧へ
realloc と一緒に使う関数もっと先へ:ポインタ・メモリ・ファイル入出力・セキュアコーディングを含む全26トラックと、段位検定・模試のフルセットは完全版に収録しています。