munmap 子例程

用途

取消映射内存页面。

标准 C 库 (libc.a)

语法

#include <sys/types.h>
#include <sys/mman.h>
int munmap ( addr len)
void *addr;
size_t len;

描述

munmap 子例程取消映射映射文件或共享内存区域或匿名内存区域。 munmap 子例程仅取消映射从对 mmap 子例程的调用创建的区域。

如果地址位于 munmap 子例程未映射的区域中,并且该区域随后未再次映射,那么对该地址的任何引用都将导致向进程传递 SIGSEGV 信号。

参数

描述
addr 指定要取消映射的区域的地址。 必须是 sysconf 子例程使用 Name 参数的 _SC_PAGE_SIZE 值返回的页面大小的倍数。
len 指定要取消映射的区域的长度 (以字节计)。 如果 len 参数不是 sysconf 子例程使用 Name 参数的 _SC_PAGE_SIZE 值返回的页面大小的倍数, 区域的长度向上舍入为页面大小的下一个倍数。

返回值

成功时, munmap 子例程返回 0。 否则,返回-1并设置errno全局变量来指示错误。

错误代码

如果 munmap 子例程不成功,那么 errno 全局变量设置为以下值:

描述
EINVAL addr 参数不是 sysconf 子例程使用 Name 参数的 _SC_PAGE_SIZE 值返回的页面大小的倍数。
EINVAL 应用程序要求使用符合《单一 UNIX 规范》第 2 版的行为,且 len参数为 0。