我正在使用 mmap 创建一个 12 字节的匿名映射(我知道的很小)
p = mmap(NULL,
12,
PROT_READ| PROT_WRITE,
MAP_ANONYMOUS | MAP_PRIVATE,
-1,
0);
然后我想验证我是否可以写超过这 12 个字节
p=p+13;
strcpy(p,str);
printf("String at p is %s\n", ((char *)p));
果然我可以读写这个区域。我尝试通过将指针增加 20,000 来移动约 5 页。我系统上的页面大小是 4096。我使用 sysconf(_SC_PAGESIZE) 发现了这一点。我仍然可以读写指针
这是怎么回事?我做错了什么还是我还没有达到一些 glibc 限制?
编辑:为了验证,我希望我的代码失败,超出一些限制,我无法意识到那个限制在哪里