这是一个铿锵的错误吗?
#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()返回值别名为空。但在验证指针是否相同后,这仍然有效吗?