【发布时间】:2016-12-15 09:48:55
【问题描述】:
如何在 free_x 函数中取消初始化 x?我必须这样做才能适应 API 方法。我可以很容易地通过将 null 分配给 x 来取消初始化它,但我必须在 free_x 函数中执行它。
typedef struct
{
int field1;
void *field2;
}my_struct;
static my_struct var;
int main(void)
{
void *x;
alloc_x(&x);
free_x(x); // x = NULL works but not allowed
return 0;
}
void alloc_x(void **param)
{
*param = (my_struct *)&var;
}
void free_x(void *param)
{
// how can I free param here?
}
【问题讨论】:
-
*param = NULL;.......?; -
*param = NULL 应该可以工作
-
指针的地址?还是指针指向的地址?
-
OT:
*param = (my_struct *)&var;这里的演员阵容毫无用处。就做*param = &var; -
@sanchop22 那你不能。如果你想改变“你传递给
free_x的东西指向的东西”(即将它设置为NULL),那么你必须传递一个指向指针的指针,就像你对alloc_x所做的那样。
标签: c pointers struct free pointer-to-pointer