詳解C語言中free()函數(shù)與getpagesize()函數(shù)的使用
C語言free()函數(shù):釋放動態(tài)分配的內(nèi)存空間
頭文件:
#include <stdlib.h>
free() 函數(shù)用來釋放動態(tài)分配的內(nèi)存空間,其原型為:
void free (void* ptr);
free() 可以釋放由 malloc()、calloc()、realloc() 分配的內(nèi)存空間,以便其他程序再次使用。
【參數(shù)說明】ptr 為將要釋放的內(nèi)存空間的地址。
free() 只能釋放動態(tài)分配的內(nèi)存空間,并不能釋放任意的內(nèi)存。下面的寫法是錯誤的:
int a[10]; // ... free(a);
如果 ptr 所指向的內(nèi)存空間不是由上面的三個函數(shù)所分配的,或者已被釋放,那么調(diào)用 free() 會有無法預(yù)知的情況發(fā)生。
如果 ptr 為 NULL,那么 free() 不會有任何作用。
注意:free() 不會改變 ptr 變量本身的值,調(diào)用 free() 后它仍然會指向相同的內(nèi)存空間,但是此時該內(nèi)存已無效,不能被使用。所以建議將 ptr 的值設(shè)置為 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()函數(shù):取得內(nèi)存分頁大小
頭文件:
#include <unistd.h>
定義函數(shù):
size_t getpagesize(void);
函數(shù)說明:返回一分頁的大小,單位為字節(jié)(byte)。此為系統(tǒng)的分頁大小,不一定會和硬件分頁大小相同。
返回值:內(nèi)存分頁大小。
附加說明:在 Intel x86 上其返回值應(yīng)為4096bytes。
范例
#include <unistd.h> main(){ printf("page size = %d\n", getpagesize()); }
相關(guān)文章
帶你用C語言實(shí)現(xiàn)strtok和字符串分割函數(shù)
下面小編就為大家?guī)硪黄猚語言中字符串分割函數(shù)及實(shí)現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2021-09-09C++圖形界面開發(fā)Qt教程:嵌套圓環(huán)示例
這篇文章主要介紹了C++實(shí)現(xiàn)圖形界面開發(fā)Qt教程,涉及坐標(biāo)函數(shù)的應(yīng)用及圖形界面程序設(shè)計,需要的朋友可以參考下,希望能給你帶來幫助2021-08-08C++示例講解friend static const關(guān)鍵字的用法
靜態(tài)成員static是解決同一個類的不同對象之間數(shù)據(jù)和函數(shù)共享問題。區(qū)分全局變量,全局變量也能實(shí)現(xiàn)數(shù)據(jù)共享,但安全性和封裝性被破壞了,友元提供了不同類或?qū)ο蟮某蓡T函數(shù)之間、類的成員函數(shù)與一般函數(shù)之間進(jìn)行數(shù)據(jù)共享的機(jī)制,const常引用-被引用的對象不能被更新2022-06-06C++中關(guān)于std::queue?中遇到釋放內(nèi)存錯誤的問題
這篇文章主要介紹了std::queue中遇到釋放內(nèi)存錯誤的問題,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-07-07VSCode插件開發(fā)全攻略之跳轉(zhuǎn)到定義、自動補(bǔ)全、懸停提示功能
這篇文章主要介紹了VSCode插件開發(fā)全攻略之跳轉(zhuǎn)到定義、自動補(bǔ)全、懸停提示,需要的朋友可以參考下2020-05-05