Most present-day OSes use virtual memory. Every process receives its own address space, covering a large portion of the possible pointer range (32, 48 or 64 bits).
See for example this question for more details.