假设我有这个结构
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);” 足够了还是我需要一个一个地释放每个结构的属性?
它引出了另一个问题——结构是如何存储在内存中的?我注意到一个奇怪的行为 - 当我尝试打印结构地址时,它等于它的第一个属性的地址。
printf("Structure address %d == firstName address %d", testPerson, testPerson->firstName);
这意味着这个 free(testPerson) 应该等于这个 free(testPerson->firstName);
这不是我想做的。
谢谢