#include <iostream>
#include <cstring>
#include <sys/mman.h>

int main() {
        char *mem1 = (char*) mmap(NULL, 8192, PROT_READ | PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0);
        mprotect(mem1 + 4096, 4096, PROT_NONE);  // disallow access to second page
        std::memset(mem1, 0, 4096);
        char mem2[8192] = {0};
        mem2[4094] = 1;

        std::cout << std::memcmp(mem1 + 1, mem2, 4095) << std::endl;  //works
        std::cout << std::memcmp(mem1 + 1, mem2, 8192) << std::endl;  //crashes

        return 0;
}

