【发布时间】:2015-03-21 02:54:21
【问题描述】:
假设我有一个结构:
typedef struct{
char *ID;
char *name;
float price;
int quantity;
} Generic_Properties;
现在,如果我使用 malloc 为其在堆中分配空间并将地址保存在指针中,让我们称他为 p1。现在我想释放那个特定的内存块,只声明free(p1)就足够了:
free(p1);
或者我是否需要分别释放 ID 和名称指针,因为我使用 malloc 为它们指向的字符串分配空间?
【问题讨论】:
-
malloc所需的一切free。 -
正如@JoachimPileborg 所说。加注:您通常需要
freeID 和名称,然后再使用free属性结构(除非您在某处保留那些指针的副本),因为ID和name成员变量一旦您就无效释放了它们所属的结构。