pointer = (int*)realloc(0, sizeof(int))


一个有效的表达?

我觉得,由于realloc的第一个参数是一个指针,并且这里是0(为OS保留的内存地址),因此该语句不应是有效的。有人可以评论声明的有效性吗?

最佳答案

这是有效的声明。

C标准的§7.22.3.5:


void *realloc(void *ptr, size_t size);

  
  如果ptr是空指针,则realloc函数的行为类似于malloc函数的行为。
  指定的大小。否则,如果ptr与内存较早返回的指针不匹配
  管理功能,或者通过调用free或
  realloc函数,行为未定义。如果无法存储新对象
  分配后,旧对象不会被释放,并且其值不变。

关于c - C中realloc()函数的有效性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20879149/

10-13 01:59