在realloc()之前需要malloc()吗?

因为我读过realloc将作为malloc,如果指向的大小是0,我使用它没有malloc(),只要指针是静态的,全局的,或者如果是自动的话显式设置为NULL。

但是,我注意到很多程序员试图设置它或将其设置为malloc(1)。 需要它吗?

从开放组的规格 :

如果ptr是空指针,则realloc()应等于指定大小的malloc()。

如果ptr与之前由calloc(),malloc()或realloc()返回的指针不匹配,或者如果先前已通过调用free()或realloc()释放空间,则行为未定义。

malloc不是必需的,您只能使用realloc

malloc(n)等效于realloc(NULL, n)

但是,使用malloc而不是realloc的特殊语义通常更清楚。 这不是什么有效的问题,而是混淆阅读代码的人。

(编辑:删除提及realloc作为free ,因为它不是标准C.请参阅评论。)