Reputation: 647
I am exploring the lower level workings of the system, and was wondering how malloc
determines the start address of the heap. Is the heap at a constant offset or is there a call of some sort to get the start address? Does the stack affect the start address of the heap?
Upvotes: 2
Views: 3005
Reputation: 11594
sbrk returns the start address of the bytes it adds (or removes). In a fresh process with no heap allocated yet, the first call to sbrk should then return the start address of the "break" section of the heap. If I had to bet, that's what malloc implementations which use brk/sbrk probably do on their first run.
Upvotes: 4
Reputation: 175705
Traditionally, the heap started just above the text section and grew up; stack frames didn't affect start address at all as they grow down towards the unmapped 0 page. However, it's more common these days for
malloc()
usually just calls mmap()
to get an address anywhere in the virtual address spaceUpvotes: 1