記憶體管理API

2021-09-26 04:26:31 字數 1119 閱讀 1377

作業系統中庫里的函式是通過呼叫下層函式來實現的

函式						 呼叫的庫			呼叫的下層函式

自動分配/釋放記憶體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文件管...