Sample of allocation randomization (lots of details skipped, ie. shared libraries, etc) Note: per-process address space is larger than shown: 3.75GB tiny allocations done with malloc() are randomly allocated within a "bucket" page allocations with malloc() over pagesize are simply allocated using mmap() mmap() gives us "gap pages" (more on that later..) mmap()-allocated memory malloc()-allocated memory (page size or greater) malloc()-allocated memory (objects < page in size)