C - uwalniające struktury
Powiedzmy, że mam tę strukturę
typedef struct person{
char firstName[100], surName[51]
} PERSON;
i przydzielam miejsce przez malloc i wypełniając je pewnymi wartościami
PERSON *testPerson = (PERSON*) malloc(sizeof(PERSON));
strcpy(testPerson->firstName, "Jack");
strcpy(testPerson->surName, "Daniels");
Jaki jest prawidłowy i bezpieczny sposób uwolnienia całej pamięci zajmowanej przez tę strukturę? Jest „wolny (testPerson)”; wystarczy czy muszę uwolnić atrybut każdej struktury po kolei?
Prowadzi mnie to do kolejnego pytania - jak struktury są przechowywane w pamięci? Zauważyłem dziwne zachowanie - kiedy próbuję wydrukować adres struktury, jest on równy adresowi pierwszego atrybutu.
printf("Structure address %d == firstName address %d", testPerson, testPerson->firstName);
Co oznacza, że ten darmowy (testPerson) powinien być równy temu free (testPerson-> firstName);
i nie to chcę robić.
Dzięki