?
Die Reihenfolge ist denke ich so (bin mir aber auch nicht sicher) :
NULL Page(0-128Mb),Codesegment,Datensegment,BSS,Heap,DSO,VDSO,DSO,Stack,Kernel man muss auch beachten das ASLR deaktiviert ist.
Rein theorethisch(denk aber das ist zu 80% falsch könntest du die Startadresse bekommen wenn du zum ersten Mal dynamisch Speicherplatz reservierst. Wenn ich diesen mit GetProcessHeap vergleiche ist aber dazwischen noch viel Raum.
HANDLE h = GetProcessHeap();
int *iPtr = (int*) malloc (sizeof(int));
printf("Startadresse : %x \nGetProcessHeap : %x",iPtr,h);
free(iPtr);
Bei mir ist die Adresse von iPtr kleiner als von dem HANDLE h deshalb würde ich ausschließen das GetProcessHeap den Anfang des Heaps liefert. Das jedoch iPtr der Anfang ist weiß ich auch nicht. Ich kenn mich nicht so gut im virtuellen Adressraum aus