malloc中的mmap是如何分配内存的

mmap 的内存分配过程

  1. 虚拟内存的分配:当调用 mmap 分配匿名内存时,系统在进程的虚拟地址空间中为请求的内存区域创建一块地址空间。此时并不会立即为该区域分配物理内存,而是仅仅在虚拟地址空间中预留了空间。

  2. 页面分配:当进程第一次访问这个内存区域时(读、写等),会触发缺页异常(Page Fault)。操作系统在此时为该虚拟地址分配物理内存页,并将虚拟地址映射到物理内存。

  3. 内存保护mmap 调用允许指定内存区域的访问权限(prot 参数)。操作系统会根据设置的权限控制该内存区域的读写或执行权限。如果进程访问该内存时违反了权限设置,则操作系统会发出访问违规(segmentation fault)信号。

  4. 内存的释放mmap 分配的内存区域不会自动释放。当进程结束时,系统会自动回收该内存区域。如果需要提前释放该内存区域,可以调用 munmap

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值