我在这个参考资料中了解到C语言中的动态内存分配。
该文档提到:
根据该参考文献,这个程序是未定义的,因为指针ptr没有动态分配。但是,如果我使用类似以下的内容:
该文档提到:
如果我们使用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;
}
根据该参考资料,这是否也属于未定义的行为?
我认为第二种情况没有引发未定义行为。我是对的吗?
realloc
的返回值进行强制类型转换,原因与malloc
相同:https://dev59.com/dHRB5IYBdhLWcg3wgHWr - Jens Gustedt