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

Antworten auf die Frage(7)

Ihre Antwort auf die Frage