structs im speicher

05/09/2017 15:47 maxi39#1
moin,

ich möchte gerne wissen wie structs im speicher aufgebaut sind.

dafür hab ich mir ein test code geschrieben und das programm mit olly während der laufzeit angeschaut.

code:

im speicher werden die structs so angelegt:


A6 28 B1 02|9F 64 00 18| und A7 28 B1 03|81 64 00 1C|

scheinen die header zu sein wobei 1c und 18 die größe sind. (glaub ich)

wofür stehen diese bytes:
A6 28 B1 02|9F 64 00
A7 28 B1 03|81 64 00

und am ende
AB AB AB AB|AB AB AB AB ?

€ sind header von malloc
05/09/2017 16:39 th0rex#2
Digga was für Header, das hier ist C und nicht irgendeine lustige Sprache mit reflection oder was auch immer. Abgesehen von padding besteht die struct nur aus dem was du darein packst. Da alle member die gleiche Größe haben wirst du da aber kein padding zwischen haben.
05/09/2017 16:43 maxi39#3
Quote:
Originally Posted by C0untLizzi View Post
Digga was für Header, das hier ist C und nicht irgendeine lustige Sprache mit reflection oder was auch immer. Abgesehen von padding besteht die struct nur aus dem was du darein packst. Da alle member die gleiche Größe haben wirst du da aber kein padding zwischen haben.
trotzdem sind da header. sind das malloc header, in form von (pointer auf nächsten freien speicherbereich und die größe des belegten blockes ?
05/09/2017 16:47 th0rex#4
Das können auch random Bytes sein. Ob das was mit malloc zu tun hat schaust du am besten in deiner malloc Implementierung nach. Auf Linux sind da immer 4 Bzw 8 Bytes Afaik vor allem das allokiert wird.
05/18/2017 08:53 atom0s#5
From the look of it, it does not look like you are at the correct address in memory while looking at your structures memory. Be sure to look into the pointer and that you are not looking at the memory around the pointer itself.