版權所有 © 2014 tutorialspoint
void * mremap(void *old_address, size_t old_size , size_t new_size, int flags);
old_address 是要擴充套件(或縮小)的虛擬記憶體塊的舊地址。請注意,old_address 必須是頁面對齊的。old_size 是虛擬記憶體塊的舊大小。new_size 是調整大小後虛擬記憶體塊的請求大小。
在 Linux 中,記憶體被劃分為頁面。使用者程序具有(一個或)多個線性虛擬記憶體段。每個虛擬記憶體段都具有一個或多個對映到實際記憶體頁面的對映(在頁表中)。每個虛擬記憶體段都有自己的保護(訪問許可權),如果記憶體訪問不正確(例如,寫入只讀段),則可能會導致段錯誤。訪問段之外的虛擬記憶體也會導致段錯誤。
mremap() 使用 Linux 頁表方案。mremap() 更改虛擬地址和記憶體頁面之間的對映。這可以用來實現非常高效的realloc()。
flags 位掩碼引數可以為 0,或包含以下標誌
brk (2)
getpagesize (2)
getrlimit (2)
mlock (2)
mmap (2)
sbrk (2)
廣告