如何解决使用带有 NULL 指针的 realloc
这在 c 中有效吗?
int func()
{
static int *p = NULL;
p = realloc(p,20);
return 0;
}
我想在递归中使用它,所以每次调用 func
函数时,如果已经分配了内存,它将被重新分配,如果没有(第一次调用),它将被分配。
解决方法
使用 realloc()
和 NULL
作为第一个参数是合法的,realloc(NULL,size)
等价于 malloc(size)
,但您的代码是非法的,因为它使用的是未初始化的非值-静态局部变量p
,这是不确定的。
引用自 N1570 7.22.3.5 realloc 函数:
#include <stdlib.h>
void *realloc(void *ptr,size_t size);
3 如果 ptr 是空指针,则 realloc 函数的行为类似于指定大小的 malloc 函数。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。