関数
free
malloc・realloc で確保した領域を開放する
#include <stdlib.h>
char *p;
p = malloc(100);
if ( p != NULL ){
/* malloc 失敗 */
}
...
free(p);
/* free(3) がエラーになることはないので、エラーチェックは不要 */
メモリを free(3) した場合でも、確保したメモリが OS に即座に返されることはない。プロセスが終了して初めてメモリが OS に返却され、他のプロセスから利用可能になる。
既に free(3) した領域を、再度 free(3) してはいけない (これをダブルフリー (double free) と呼ぶ)。ダブルフリーはコアダンプの原因となるだけではなく、外部から悪意のあるコードを実行される可能性がある。ダブルフリーを行っても問題がない OS (FreeBSD) もあるが、多くの OS はダブルフリー対策はなされていないので、注意しよう。