Memorydump
-
Hallo,
habe eine Funktion geschrieben, die einen Zeiger auf "irgendetwas" enthält und dann um diese Adresse den Speicher ausgibt.
memorydump(unsigned char *ptr)
Klappt auch wunderbar.
float d = 3.55;
memorydump(&d)
Nun will ich vom Benutzer eine Eingabe bekommen, die einen Offset von dieser Speicherstelle angibt.
do { printf("Offset ('455'=Ende): "); scanf("%d", &offset); memorydump(&d+offset); } while(offset!=455);
Leider springt der immer "zuweit". Bei 1 als Eingabe sprngt er 4, bei 2 als Eingabe springt er 8.
Woran kann das liegen,
was mache ich falsch?
-
Hi,
inkrementiert man den Zeiger eines Datenypen X um x, dann springt die Adresse um die Anzahl der Bytes dieses Datentypen weiter, also um xsizeof(X). Bei dir ist es vermutlich ein int.
Du kannst statt int char d benutzen, dann erflogt eine Inkrementierung um 1 Byte, oder du castest nach char:(char*)&d+offset
Gruß,
B.B.