この関数の目的
free()は、確保された動的メモリ領域を開放する。
定義
#include <stdlib.h> void free(void *ptr);
働き>
この関数は ptr が指す空間を確保されていない状態に戻す。この領域は、以降の確保に使えるようになる。 ptr がヌルポインタである場合、何も起きない。 calloc() 、 malloc() 、 realloc() のいずれの返り値でもなかった場合、 または free() か realloc() によって領域が開放されていた場合の動作は未定義である。
解説
使い終わった領域は、必ず開放する習慣をつけよう。使い終わったのに開放されず、メモリの領域を占めてしまうことをメモリ・リークという。 こうした領域は、確保時のポインタが失われると永久に開放されない。まともなOSならこれによって固まることはないはずだが、 長い実行時間を想定するプログラムではメモリリークは致命的なバグである。