dai*_*isy 12 linux kernel mmap
我在想,为什么映射内存的大小是一个参数传入的,因为从同一个地址开始不能有多个映射(可能吗?),为什么linux内核不会记录起始地址,长度一起,但让用户空间程序记住它们.
我的意思是,为什么不是这样,只需使用起始地址作为主键来存储信息树.
您可以munmap使用先前映射的内存地址的子范围.例如:
#include <stdio.h>
#include <sys/mman.h>
#include <unistd.h>
int main()
{
int pagesize = sysconf(_SC_PAGESIZE);
char *addr = mmap(NULL, 4 * pagesize, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
addr[pagesize] = 'X';
munmap(addr, pagesize);
printf("%c\n", addr[pagesize]);
}
Run Code Online (Sandbox Code Playgroud)