C 速查手冊
11.4.10 free()
stdlib.h 的函數 (function) free() 用來做動態記憶體配置,釋放原先所建立指向的記憶體空間,使用 free() 須注意並非刪除原先記憶體空間的資料,也非將操作的指標 (pointer) 變數改為指向 NULL ,而是告訴作業系統,程式不會再去利用這塊記憶體空間。
通常有用 malloc() 、 calloc() 或 realloc() 配置過記憶體空間,不需繼續使用的話就會以 free() 釋放
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main(void)
{
char *tPtr;
tPtr = malloc(40);
if (tPtr == NULL) {
printf("建立記憶體區域失敗...\n");
exit(1);
}
strcpy(tPtr, "Actions speak louder than words.");
printf("tPtr: %p\n", tPtr);
free(tPtr);
printf("tPtr: %p\n", tPtr);
return 0;
}
/* 《程式語言教學誌》的範例程式
http://kaiching.org/
檔名:cfree.c
功能:示範 stdlib.h 中函數 free() 的使用
作者:張凱慶 */
編譯後執行,結果如下
$ gcc cfree.c |
$ a.out |
tPtr: 0x7fb65ac02980 |
tPtr: 0x7fb65ac02980 |
$ |