程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> 詳解C說話中free()函數與getpagesize()函數的應用

詳解C說話中free()函數與getpagesize()函數的應用

編輯:關於C++

詳解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());
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved