詳解C語(yǔ)言中free()函數(shù)與getpagesize()函數(shù)的使用
C語(yǔ)言free()函數(shù):釋放動(dòng)態(tài)分配的內(nèi)存空間
頭文件:
#include <stdlib.h>
free() 函數(shù)用來(lái)釋放動(dòng)態(tài)分配的內(nèi)存空間,其原型為:
void free (void* ptr);
free() 可以釋放由 malloc()、calloc()、realloc() 分配的內(nèi)存空間,以便其他程序再次使用。
【參數(shù)說(shuō)明】ptr 為將要釋放的內(nèi)存空間的地址。
free() 只能釋放動(dòng)態(tài)分配的內(nèi)存空間,并不能釋放任意的內(nèi)存。下面的寫(xiě)法是錯(cuò)誤的:
int a[10]; // ... free(a);
如果 ptr 所指向的內(nèi)存空間不是由上面的三個(gè)函數(shù)所分配的,或者已被釋放,那么調(diào)用 free() 會(huì)有無(wú)法預(yù)知的情況發(fā)生。
如果 ptr 為 NULL,那么 free() 不會(huì)有任何作用。
注意:free() 不會(huì)改變 ptr 變量本身的值,調(diào)用 free() 后它仍然會(huì)指向相同的內(nèi)存空間,但是此時(shí)該內(nèi)存已無(wú)效,不能被使用。所以建議將 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語(yǔ)言getpagesize()函數(shù):取得內(nèi)存分頁(yè)大小
頭文件:
#include <unistd.h>
定義函數(shù):
size_t getpagesize(void);
函數(shù)說(shuō)明:返回一分頁(yè)的大小,單位為字節(jié)(byte)。此為系統(tǒng)的分頁(yè)大小,不一定會(huì)和硬件分頁(yè)大小相同。
返回值:內(nèi)存分頁(yè)大小。
附加說(shuō)明:在 Intel x86 上其返回值應(yīng)為4096bytes。
范例
#include <unistd.h>
main(){
printf("page size = %d\n", getpagesize());
}
相關(guān)文章
C++實(shí)現(xiàn)LeetCode(26.有序數(shù)組中去除重復(fù)項(xiàng))
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(26.有序數(shù)組中去除重復(fù)項(xiàng)),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07
Qt實(shí)現(xiàn)TCP客戶(hù)端和服務(wù)器通訊程序
這篇文章主要為大家詳細(xì)介紹了Qt實(shí)現(xiàn)TCP客戶(hù)端和服務(wù)器通訊程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08
VS2017開(kāi)發(fā)C語(yǔ)言出現(xiàn)“no_init_all“的解決辦法
這篇文章介紹了VS2017開(kāi)發(fā)C語(yǔ)言出現(xiàn)“no_init_all“的解決辦法,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-12-12
VSCODE+cmake配置C++開(kāi)發(fā)環(huán)境的實(shí)現(xiàn)步驟
這篇文章主要介紹了VSCODE+cmake配置C++開(kāi)發(fā)環(huán)境的實(shí)現(xiàn)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
利用Qt實(shí)現(xiàn)可擴(kuò)展對(duì)話(huà)框的示例代碼
可擴(kuò)展對(duì)話(huà)框通常用于用戶(hù)對(duì)界面有不同要求的場(chǎng)合。當(dāng)供高級(jí)用戶(hù)使用或需要更多信息時(shí),可通過(guò)某種方式的切換顯示完整對(duì)話(huà)窗體(擴(kuò)展窗體)。本文將用Qt實(shí)現(xiàn)可擴(kuò)展對(duì)話(huà)框,需要的可以參考一下2022-06-06

