Memory Layout of a Program in C
So this is a whole lot more complicated these days.  There's not one stack but many for the different threads, regions have guard pages typically, and all these regions are setup with mmap (so there's no sbrk syscall anymore) just for starters.