Скажем, у меня есть эта структура
typedef struct person{
char firstName[100], surName[51]
} PERSON;
и я выделяю пространство malloc и заполняя его некоторыми значениями
PERSON *testPerson = (PERSON*) malloc(sizeof(PERSON));
strcpy(testPerson->firstName, "Jack");
strcpy(testPerson->surName, "Daniels");
Каков правильный и безопасный способ освободить всю память, занятую этой структурой? Является "бесплатным (testPerson)"; достаточно или мне нужно освободить каждый атрибут struct один за другим?
Это приводит меня к другому вопросу - как хранятся структуры в памяти? Я заметил странное поведение - когда я пытаюсь напечатать адрес структуры, он равен первому адресу атрибута.
printf("Structure address %d == firstName address %d", testPerson, testPerson->firstName);
Это означает, что это бесплатно (testPerson) должен быть равен этому бесплатно (testPerson- > Firstname);
и это не то, что я хочу сделать.
Спасибо