理解一个部分是malloc中realloc的定义(3)

sha*_*yer 2 c malloc

我引用了reallocmalloc(3)中定义的一部分(http://man.he.net/?topic=malloc§ion=all)

除非ptr为NULL,否则必须由之前调用malloc(),calloc()或realloc()返回.

如果我们打电话reallocptr那不是NULL,但是,之前的电话没有回复malloc(), calloc() 或者 realloc()

realloc的行为是不确定的?还有另一个答案吗?

R S*_*ahu 6

来自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,mallocrealloc功能,或如果空间已经到呼叫释放freerealloc功能,该行为是不确定的.