C-freie Strukturen
Nehmen wir an, ich habe diese Struktur
typedef struct person{
char firstName[100], surName[51]
} PERSON;
und ich teile Speicherplatz durch malloc zu und fülle ihn mit einigen Werten
PERSON *testPerson = (PERSON*) malloc(sizeof(PERSON));
strcpy(testPerson->firstName, "Jack");
strcpy(testPerson->surName, "Daniels");
Was ist der richtige und sichere Weg, um den gesamten von dieser Struktur belegten Speicher freizugeben? Ist "frei (testPerson);" genug oder muss ich jedes Strukturattribut einzeln freigeben?
Es führt mich zu einer anderen Frage: Wie werden Strukturen im Gedächtnis gespeichert? Ich habe ein merkwürdiges Verhalten festgestellt. Wenn ich versuche, eine Strukturadresse auszudrucken, entspricht diese der Adresse des ersten Attributs.
printf("Structure address %d == firstName address %d", testPerson, testPerson->firstName);
Was bedeutet, dass dieses freie (testPerson) gleich diesem freien (testPerson-> firstName) sein sollte;
und das will ich nicht tun.
Vielen Dank