作業系統中庫里的函式是通過呼叫下層函式來實現的
函式 呼叫的庫 呼叫的下層函式
自動分配/釋放記憶體auto_ptr stl 呼叫了標準c++
構造/析構 new/delete c++ 呼叫了標準c
malloc/free 標準c 呼叫了posix
brk/sbrk posix 呼叫了linux系統介面
mmap/munmap linux系統介面 呼叫了核心介面
kmalloc/vmalloc 核心 呼叫了驅動
get_free_page 驅動 。。。
標準c
void* malloc(size_t size)
申請堆記憶體的大小
void free(void* ptr)
ptr為malloc申請記憶體的返回值,釋放這塊申請的記憶體空間
posix
void* sbrk(intptr_t increment)
increment:
0 獲取未分配前的記憶體首位址
>0 增加記憶體空間
<0 釋放記憶體空間
返回未分配記憶體的首位址,以位元組為單位
int brk(void* addr)
成功返回0,失敗返回-1
注意:brk/sbrk分配和釋放記憶體只是修改了使用權,真正的對映工作是mmap/munmap完成的
linux系統介面
void* mmap(void* addr,size_t length,int prot,int flags,int fd,off_t offset)
length:對映位元組數
prot:許可權
flags:對映標誌
fd:檔案描述符
offset:檔案對映偏移值
成功返回虛擬記憶體位址,失敗返回0xffffffff
int munmap(void* addr,size_t length)
功能:取消對映
length:需要對映的位元組數
成功返回0,失敗返回-1
ANSI C記憶體管理API函式
void malloc size t size malloc 函式在記憶體動態儲存區中分配乙個長度為size位元組的連續空間。返回乙個指向所分配的連續儲存域的起始位址的指標。當函式未能成功分配儲存空間時 如記憶體不足 返回乙個null指標。void free void ptr 釋放malloc 申請...
一些記憶體管理API
釋放頁面塊,釋放的頁面塊從 page 開始,個數等於2的order次方個 void free pages struct page page,unsigned int order 以 gfp mask 分配方式,分配2的order次方個連續的物理頁 unsigned long get free pag...
API文件管理
api文件是api生命週期管理的基礎,乙份完善的api文件在整個api管理過程中起著至關重要的重用。它不僅是api使用說明,更是後期維護的重要參考。管理好api文件,對於專案成員來講是乙個長期的挑戰。api生命週期的管理在考慮管理過程是否便捷 靈活的前提下,還需要考慮管理中的質量問題等,api文件管...