【发布时间】:2017-07-07 06:15:57
【问题描述】:
是否定义了行为实现?如果 NULL 和 size == 0 传递给realloc():
int main(void)
{
int *ptr = NULL;
ptr = realloc(ptr, 0);
if(ptr == NULL)
{
printf("realloc fails.\n");
goto Exit;
}
printf("Happy Scenario.\n");
Exit:
printf("Inside goto.\n");
return 0;
}
上面的代码应该打印“realloc failed”,对吧?但不是吗?我在某处读到这个对realloc 的调用也可能返回NULL。什么时候发生?
【问题讨论】:
-
可能的重复没有解决
void *vp = realloc(NULL, 0);行为的具体点。 -
我在这里同意@Jonathan。看起来引用的 dup 缺少关于重新分配 0 个元素的行为的讨论,以及有关您将返回的指针的信息。旧的 Microsoft 平台在分配 0 个元素时会遇到很多麻烦。
标签: c memory-management realloc