在Linux的头文件sys/mman.h中提供了两个用来分配内存的函数:mmap和munmap,函数定义原型如下:
| |
mmap说明
返回值:内存映射后返回虚拟内存的首地址。 参数: start为指定的映射的首地址,该地址应该没有映射过,如果为0则有系统指定位置。 length为映射的空间大小,真正分配空间大小为(length/pagesize+1)。 prot为映射的权限,分为四种未指定(PROT_NONE)、读(PROT_READ)、写(PROT_WRITE)、执行(PROT_EXEC)。如果为PROT_WRITE,则直接可以PROT_READ。 flags:映射方式,分为内存映射和文件映射。内存映射:匿名映射。当值为文件映射是后面两个参数才有效。常用的值有:MAP_ANONYMOUS、MAP_SHARED、MAP_PRIVATE。 fd:映射的文件描述符。 offset为从文件的偏移位置开始映射。
munmap说明
从start位置开始释放length个字节的内存。
应用举例
| |
其中getpagesize()函数的作用为获取一个页的大小,系统默认为4K。