我只是对 C 中 free() 函数的行为有一个一般性的问题。
我是否可以假设通过调用free()
它只是释放指针指向的内存,但保持指针完好无损?
换句话说,如果我想重用指针,指针不需要重新初始化,只需重新分配内存?
例如,这段代码是否合法?
原版
void foo()
{
data_t *x;
int y = 0;
while(x->data != some_value)
{
x = some_function(y);
y = some_other_function(x);
free(x);
}
}
修正版
void foo()
{
data_t *x;
int y = 0;
x = some_function(y);
while(x->data != some_value)
{
y = some_other_function(x);
free(x);
x = some_function(y);
}
}
忽略实际代码(以及 的内部结构data_t
)并假设some_function()
正确malloc()
s x
; 我只想知道这是否是管理内存的正确方法,还是data_t *x
每次释放后都需要重新初始化?
编辑:我编辑了代码,因为我意识到它没有正确说明我的问题。