C語言free()函數:釋放動態分配的內存空間
頭文件:
#include <stdlib.h>
free() 函數用來釋放動態分配的內存空間,其原型為:
void free (void* ptr);
free() 可以釋放由 malloc()、calloc()、realloc() 分配的內存空間,以便其他程序再次使用。
【參數說明】ptr 為將要釋放的內存空間的地址。
free() 只能釋放動態分配的內存空間,并不能釋放任意的內存。下面的寫法是錯誤的:
int a[10];// ...free(a);
如果 ptr 所指向的內存空間不是由上面的三個函數所分配的,或者已被釋放,那么調用 free() 會有無法預知的情況發生。
如果 ptr 為 NULL,那么 free() 不會有任何作用。
注意:free() 不會改變 ptr 變量本身的值,調用 free() 后它仍然會指向相同的內存空間,但是此時該內存已無效,不能被使用。所以建議將 ptr 的值設置為 NULL,例如:
free(ptr);ptr = NULL;
代碼示例:
#include <stdlib.h>int main (){ int * buffer1, * buffer2, * buffer3; buffer1 = (int*) malloc (100*sizeof(int)); buffer2 = (int*) calloc (100,sizeof(int)); buffer3 = (int*) realloc (buffer2,500*sizeof(int)); free (buffer1); free (buffer3); system("pause"); return 0;}
C語言getpagesize()函數:取得內存分頁大小
頭文件:
#include <unistd.h>
定義函數:
size_t getpagesize(void);
函數說明:返回一分頁的大小,單位為字節(byte)。此為系統的分頁大小,不一定會和硬件分頁大小相同。
返回值:內存分頁大小。
附加說明:在 Intel x86 上其返回值應為4096bytes。
范例
#include <unistd.h>main(){ printf("page size = %d/n", getpagesize());}
新聞熱點
疑難解答
圖片精選