+#include <limits.h>
#include <sys/mman.h>
#include <sys/types.h>
#include <stdio.h>
#include <unistd.h>
-static const size_t size = 100 * (1 << 20); // 100MB
-
int main() {
pid_t pid = getpid();
printf("My pid is: %d\n", pid);
+ size_t size = ((size_t)1 << (sizeof(size_t) * CHAR_BIT - 1));
+
void *p;
do {
- p = mmap(0, size, PROT_READ, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
- } while (p != MAP_FAILED);
+ do {
+ p = mmap(0, size, PROT_READ, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
+ } while (p != MAP_FAILED);
+
+ size >>= 1;
+ } while (size);
printf("Mapped at: %p\n", p);
getchar();