【发布时间】:2018-04-26 06:08:20
【问题描述】:
我使用 this 参考阅读了 C 中的动态内存分配。
那个文件说的:
realloc() 应该只用于动态分配的内存。如果 内存不是动态分配的,所以行为是不确定的。
如果我们使用realloc() 这样的东西:
int main()
{
int *ptr;
int *ptr_new = (int *)realloc(ptr, sizeof(int));
return 0;
}
根据那个引用,这个程序是未定义的,因为指针 ptr 不是动态分配的。
但是,如果我使用类似的东西:
int main()
{
int *ptr = NULL;
int *ptr_new = (int *)realloc(ptr, sizeof(int));
return 0;
}
根据该参考,它是否也是未定义的行为?
我认为第二种情况不会引发未定义的行为。我说的对吗?
【问题讨论】:
-
您提到的文档不完整。请参阅下面讲故事的人的回答。
-
在 C 中,您不应该将
realloc的返回值转换为与malloc相同的原因:stackoverflow.com/questions/605845/…
标签: c language-lawyer realloc