晚上好,
在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);
}
所以我的问题是,如何通过函数正确释放一段内存,而不释放该结构的已分配内存(在程序的其他部分仍然有效)。如果有帮助的话,我正在实施清单。
答案 0 :(得分:0)
myfoo
是分配了struct
的堆栈。您可能需要动态malloc()
结构,然后访问new_foo
struct foo *new_foo(){ return malloc(sizeof(struct foo));}
非free()
ed指针上的malloc
是未定义的行为,如果你很幸运,你可以解决分段错误,如果你运气不好,在Windows 98上,你的电脑会出现蓝屏< / p>