#include #include #include #include #include #include #define SIZE (1024 * 1024 * 1024) int main(int argc, char *argv[]) { char *addr; int i; if ((addr = mmap(0, SIZE, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0)) != MAP_FAILED) { printf("You have more than %i memory, increase SIZE\n", SIZE); return 1; } perror("mmap()"); printf("OK, now trying uncommited...\n"); if ((addr = mmap(0, SIZE, PROT_NONE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0)) == MAP_FAILED) { perror("mmap()"); return 1; } if (mprotect(addr, SIZE, PROT_READ | PROT_WRITE) == -1) { perror("mprotect()"); return 1; } printf("Memory of size %i successfully committed!\n", SIZE); printf("overcommit_memory: "); fflush(stdout); system("cat /proc/sys/vm/overcommit_memory"); for (i = 0; i < SIZE; i += PAGE_SIZE) { addr[i] = 1; } return 0; }