mprotect 系统调用保护页边界内的内存区域:
int mprotect(void *addr, size_t len, int prot);
Here len
应该是页面大小的倍数。
有没有办法只保护几个连续的地址,这些地址不与页边界对齐,即len < pagesize
?
我不这么认为,不。限制是因为MMU http://en.wikipedia.org/wiki/Memory_management_unit它可以控制的粒度有硬件限制。有一些表保存访问限制,并且您不能为每个字节都有一个表槽;该表本身将使用您所有的 RAM。因此,它变得更加粗糙,每个页面都有表格条目。
如果您使用的是 Linux,您也许可以使用 Valgrind 执行某些操作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)