如果我看到cat / proc // smaps的输出,我发现有一些内存区域与之没有关联的读/写/执行权限。这些区域也映射到inode编号0。
我想知道一个地区如何才能进入这种状态?是某种内存泄漏吗?
这个地区是否可以再次被这个地区使用?
答案 0 :(得分:0)
他们不是泄密。通过使用mmap()
和MAP_ANONYMOUS
标记调用PROT_NONE
来创建它们。该流程仍然可以使用该虚拟地址空间:它可以使用munmap()
取消映射区域,或使用mprotect()
更改保护。
此类区域通常用于设置保护页,用于在不断增长的数据结构超出其当前范围时触发信号。