gpt4 book ai didi

c - 自由结构和字符串成员

转载 作者:太空宇宙 更新时间:2023-11-04 08:53:10 25 4
gpt4 key购买 nike

假设我为一个结构分配了动态内存。该结构内部是一个 char *,它也具有动态内存。如果我 free(structure) ,其他字段是否也会释放它的内存?

最佳答案

没有。 free() 函数只是释放您通过 malloc() 获取的 block ,就其而言,它只是一堆字节。它不知道允许它做这样的事情。您必须先释放成员:

free(ptr->str);
free(ptr);

您可能会发现为您的特定类型创建一个销毁函数来清理它分配的所有内存会很方便。这样您就可以将逻辑放在一个地方,并且您的函数确实知道结构的详细信息:

void destroy_foo(struct foo *pfoo) {
free(foo->str);
free(foo);
}

然后你可以调用 destroy_foo(foo);

关于c - 自由结构和字符串成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18884636/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com