a.k.a. memory management
The Operating system allocates memory to processes, so that a process can only access that portion of memory.
This memory is divided into:
The addresses that the program uses to reference variables are actually Virtual memory addresses, which the operating system translates to physical memory.
https://en.wikipedia.org/wiki/Memory_management
What and where are the stack and heap?
http://stackoverflow.com/questions/18446171/how-do-compilers-assign-memory-addresses-to-variables