我引用了reallocmalloc(3)中定义的一部分(http://man.he.net/?topic=malloc§ion=all)
除非ptr为NULL,否则必须由之前调用malloc(),calloc()或realloc()返回.
如果我们打电话realloc给ptr那不是NULL,但是,之前的电话没有回复malloc(), calloc() 或者 realloc()?
realloc的行为是不确定的?还有另一个答案吗?
来自http://en.cppreference.com/w/c/memory/realloc(强调我的):
重新分配给定的内存区域.它必须先由
malloc(),calloc()或realloc()尚未通过调用free或释放来释放realloc.否则,结果是不确定的.
从C99标准(强调我的):
7.20.3.4
realloc功能3如果
ptr是空指针,则该realloc函数的行为类似于malloc指定大小的函数.否则,如果ptr不匹配的指针早些时候返回calloc,malloc或realloc功能,或如果空间已经到呼叫释放free或realloc功能,该行为是不确定的.