在c中汇编多个匿名页面



我在内存中映射了两个匿名页面,然后访问第二个页面,如下所示:

    int* map = mmap(NULL, 8 * 1024, PROT_READ, PROT_WRITE, MAP_SHARED |
                    MAP_ANONYMOUS, -1, 0);
    int a = map[4096];

其中页面大小为4096(我对此进行了验证),但这会抛出SIGSEGV。我尝试在mmap中使用madvise(map, 8 * 1024, MADV_WILLNEED)MAP_POPULATE标志,但这些都没有帮助。我该怎么做才能让它发挥作用?

问题是我将map声明为int*,因此引用map[4096]会在位置map + 4 * 4096查找值,假设int的长度为4字节,这显然超出了我为mmap保留的范围。

最新更新