【发布时间】:2021-08-04 19:03:42
【问题描述】:
这在 c 中有效吗?
int func()
{
static int *p = NULL;
p = realloc(p, 20);
return 0;
}
我想在递归中使用它,所以每次调用 func 函数时,如果已经分配了内存,它将被重新分配,如果没有(第一次调用)它将被分配。
【问题讨论】:
-
p不是空指针——它是未初始化的。我想你想要static int*p; -
您描述的内容是有效,但您的代码确实不与您描述的内容匹配,因为您根本没有初始化
p。跨度> -
您应该将
int *p;更改为static int *p;以让它做您想做的事情。static使变量在多次调用func之间保持不变,默认初始化为零。 -
我宁愿将指针作为参数向下传递给递归调用,而不是静态的。这将使函数纯粹且可重入。不要忘记释放它。
-
好的,我现在确实修复了代码
标签: c realloc null-pointer