beta
beta

Reputation: 647

Getting the start address of the current process's heap?

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

Answers (2)

Jegschemesch
Jegschemesch

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

Michael Mrozek
Michael Mrozek

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

  1. The first address to be randomized, to make it harder for exploits to hit the right address in memory
  2. The heap to be non-contiguous, as malloc() usually just calls mmap() to get an address anywhere in the virtual address space

Upvotes: 1

Related Questions