clang - realloc别名中的未定义行为

时间:2016-10-18 11:12:24

标签: c clang undefined-behavior

这是一个铿锵的错误吗?

#include <stdlib.h>
long func(int *p, long size) {
  int *q = (int*)realloc(p,size);
  if (p == q) {
    *p = 1;
    *q = 2;
    return *p + *q;
  }
  return 0;
}
当realloc最终没有移动任何东西时,

func()返回3。这显然是“错误的”,但这是一个错误吗?

realloc()返回值别名为空。但在验证指针是否相同后,这仍然有效吗?

0 个答案:

没有答案