arrow 若葉プログラミング塾 > 知識の玉手箱 > C関数リファレンス >
free()
free()

この関数の目的

free()は、確保された動的メモリ領域を開放する。

定義

	#include <stdlib.h>
	void free(void *ptr);

働き

この関数は ptr が指す空間を確保されていない状態に戻す。この領域は、以降の確保に使えるようになる。 ptr がヌルポインタである場合、何も起きない。 calloc()malloc()realloc() のいずれの返り値でもなかった場合、 または free() か realloc() によって領域が開放されていた場合の動作は未定義である。

解説

使い終わった領域は、必ず開放する習慣をつけよう。使い終わったのに開放されず、メモリの領域を占めてしまうことをメモリ・リークという。 こうした領域は、確保時のポインタが失われると永久に開放されない。まともなOSならこれによって固まることはないはずだが、 長い実行時間を想定するプログラムではメモリリークは致命的なバグである。

arrow 若葉プログラミング塾 > 知識の玉手箱 > C関数リファレンス >
KC