mmap(NULL, n, PROT_WRITE, MAP_ANON | MAP_PRIVATE, -1, 0);
Run Code Online (Sandbox Code Playgroud)
嗨...我想弄清楚上面代码的含义......?
caf*_*caf 11
它请求n内存字节的私有可写匿名映射.
fork()子进程和父进程之后将具有独立映射);在这种情况下,它本质上是请求一块n字节的内存,因此大致相当于malloc(n)(尽管它必须被释放munmap()而不是free()).它还要求内存可写但不可读,但底层硬件通常不支持这样的请求.
man mmap 会帮助你.
它在进程的虚拟地址空间中创建内存映射.它创建了一个匿名映射,就像malloc用来分配n内存字节一样.
参数是:
NULL - 内核将为映射选择一个地址n - 映射的长度(以字节为单位)PROT_WRITE - 可以写入页面MAP_ANON | MAP_PRIVATE - 映射不受文件支持,写入映射的更新对进程是私有的-1 - 文件描述符; 未使用,因为映射不受文件支持0 - 在开始映射的文件中的偏移量 - 再次,未使用,因为映射不由文件支持