【发布时间】:2012-11-15 11:05:49
【问题描述】:
假设我有这个结构
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);
这意味着 免费(测试人) 应该等于这个 免费(testPerson->firstName);
这不是我想做的。
谢谢
【问题讨论】:
-
一个好的经验法则:对于每个 malloc,您都需要一个免费的(不多也不少)。