Basically, if you cannot imagine an address that passes 2^X-1 , you cannot address more than 2^X bytes of memory.
This is true for x86, even if some workarounds were implemented and used (for example, PAE ), which allows you to have more physical memory, even if with the restrictions imposed by the fact that it is more hacks than real solutions to the problem.
In 64-bit architecture, the standard pointer size is doubled, so you no longer have to worry.
Remember that in any case, virtual memory translates addresses from process space to physical space, so it’s easy to see that the hardware can support more memory, even if the maximum addressable memory from the point of view of the process is still limited by the size of the pointer.
source share