gpt4 book ai didi

c - 释放其分配区域之外的内存

转载 作者:行者123 更新时间:2023-11-30 17:44:53 27 4
gpt4 key购买 nike

大家晚上好

在 C 编程语言中,我弄乱了指针,并且不断出现分段(核心转储)错误。显然我的一些代码搞砸了。这是我正在做的一些示例代码(但不是我的实际代码)。请注意,我在其中一个函数中返回本地指针。

struct foo* new_foo ( )
{
struct foo myfoo;
return &myfoo;
}

void free_foo ( struct foo* myfoo )
{
// pnt_var is being used on another part
// of the program so we can't free it yet
foo->ptr_var = NULL;
free(foo);
}

所以我的问题是,如何通过函数正确释放内存段,而不释放该结构分配的内存(该内存在程序的其他部分仍然处于事件状态)。如果有帮助的话,我正在实现列表。

最佳答案

myfoo 是一个堆栈分配的struct。您可能必须动态 malloc() 该结构,然后在 new_foo

外部访问该结构

像这样:

struct foo *new_foo(){ return malloc(sizeof(struct foo));}

和未malloced指针上的free()是未定义的行为,如果你幸运的话,你会逃脱段错误,如果你不幸运并且在Windows上98、你的电脑会蓝屏

关于c - 释放其分配区域之外的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19802800/

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