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:
Code:
#include <stdlib.h>
typedef struct test
{
int a;
int b;
int c;
} test;
typedef struct testt
{
int a;
int b;
} testt;
int main()
{
test *t2 = (test*)malloc(sizeof(test));
t2->a = 3;
t2->b = 4;
t2->c = 5;
testt *t3 = (testt*)malloc(sizeof(testt));
t3->a = 3;
t3->b = 4;
return 0;
}
im speicher werden die structs so angelegt:
CPU Dump
Address Hex dump ASCII
00641040 A7 28 B1 03|81 64 00 1C| §(±d
00641050 03 00 00 00|04 00 00 00|05 00 00 00|AB AB AB AB| ««««
00641060 AB AB AB AB| ««««
CPU Dump
Address Hex dump ASCII
00641000 A6 28 B1 02|9F 64 00 18| ¦(±Ÿd
00641010 03 00 00 00|04 00 00 00|AB AB AB AB|AB AB AB AB| ««««««««
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