在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.请参阅评论。)