版权所有 © 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)
广告