詳解C說話中free()函數與getpagesize()函數的應用。本站提示廣大學習愛好者:(詳解C說話中free()函數與getpagesize()函數的應用)文章只能為提供參考,不一定能成為您想要的結果。以下是詳解C說話中free()函數與getpagesize()函數的應用正文
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()); }