Excellent article! It explains how programs are laid out in memory.
From the blog post:
Memory management is the heart of operating systems; it is crucial for both programming and system administration. In the next few posts Iâ€™ll cover memory with an eye towards practical aspects, but without shying away from internals. While the concepts are generic, examples are mostly from Linux and Windows on 32-bit x86. This first post describes how programs are laid out in memory. Each process in a multi-tasking OS runs in its own memory sandbox. This sandbox is the virtual address space, which in 32-bit mode is always a 4GB block of memory addresses.