C言語のrealloc関数の用途は何か
realloc() 関数は、メモリブロックのサイズを変更する関数です。すでに割り当てられているメモリブロックのサイズを大きくしたり小さくしたりするために使用できます。
realloc関数の使い方は次の通りです。
void* realloc(void* ptr, size_t size);
ptrは確保済みメモリを指すポインタで、sizeは新しいメモリ塊のサイズです。
realloc関数の戻り値は、再割り当て後のメモリブロックへのポインタです。メモリ割り当てに成功すると、新しい割り当てられたメモリへのポインタが返され、割り当てに失敗するとNULLポインタが返されます。
realloc関数を用いる際には、次の点に注意する必要がある。
- realloc関数が新しいメモリブロックを確保することに成功すると、元のメモリブロックの内容は新しいメモリブロックにコピーされ、元のメモリブロックのポインタは解放されます。
- realloc関数が失敗した場合、元メモリーブロックの内容はそのまま残り、元メモリーブロックのポインターは解放されません。
- ptrがNULLポインタの場合、realloc関数はmalloc関数を実行して新しいメモリを割り当てることと実質的に等価です。
- サイズが0の場合、realloc関数はptrが指すメモリの解放のためにfree関数を呼び出した場合と同様の振る舞いをする。
- realloc関数を用いてメモリブロックのサイズを再割り当てた後は、元のメモリブロックのポインタを操作しないでください。もはや有効なメモリブロックを指しません。
全体としてrealloc関数は、必要に応じてメモリブロックのサイズを再割り当てし、元のメモリブロックのコンテンツを新しいメモリブロックにコピーするという役割を果たします。これは非常に便利な関数で、動的メモリ管理でよく使用されます。