この関数の目的
realloc()は、動的メモリを再確保する。
定義
#include <stdlib.h> void *realloc(void *ptr, size_t size);
働き
この関数は ptr で指定されるオブジェクトのサイズを size に変更する。 変更前と後での小さいほうのサイズまでの内容は変化してはいけない。 変更後のサイズのほうが大きかった場合、新たに確保された部分の内容は不定になる。 ptr がヌルポインタであれば、この関数は引数に size を渡した malloc() と同じように動作する。 ヌルポインタでなく、 calloc() 、 malloc() 、 realloc() のいずれの返り値でもないか、 free() か realloc() によって開放されていた場合の動作は未定義である。 確保できない場合、 ptr の指すオブジェクトは変更されない。 size がゼロで ptr がヌルポインタでない場合は、オブジェクトは開放される。
返り値は、ヌルポインタか、移動したかもしれない領域へのポインタである。
解説
確保した領域が移動する可能性があるので、この関数を呼んだ後、領域内へのポインタは全て張り替える必要がある。