22.內存映射區mmap

1.mmap--創建內存映射

作用:將磁盤文件的數據映射到進程虛擬地址空間中的動態庫加載區中,可以看成一塊虛擬內存,用戶通過修改內存就能修改磁盤文件

函數原型:
void* mmap(

void* addr,         // 映射區首地址,傳NULL

size_t length,      // 映射區的大小
  一般文件大小多大就填多大,默認換算成4K的整數倍,100byte->4Kbyte,5000byte->8Kbyte

  但是,不能填0

int prot,            // 映射區的權限
  PROT_READ--映射區必須要有讀權限
  PROT_WRITE

  PROT_READ | PROT_WRITE

int flags,           // 標誌位參數
  MAP_SHARED:修改了內存數據會同步到磁盤

  MAP_PRIVATE:修改了內存數據不會同步到磁盤

int fd,              // 文件描述符

  open要映射的文件的fd

off_t offset        // 映射文件的偏移量
  映射的時候文件指針的偏移量,必須是4K的整數倍,一般填0
);
返回值:
調用成功:映射區的首地址

調用失敗:MAP_FAILED


2.munmap--釋放內存映射區
函數原型:
  int munmap(void* addr,size_t length);
  addr:mmap的返回值,映射區的首地址
  length:mmap的第二個參數,映射區的長度
發佈了119 篇原創文章 · 獲贊 12 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章