由于我已经阅读 realloc 将在指向的大小为 0 时充当 malloc,因此我在没有 malloc() 的情况下使用它,前提是指针是静态的、全局的,或者如果是自动的,则显式设置为 NULL。
但是,我注意到很多程序员尝试设置它或将其设置为 malloc(1)。需要吗?
由于我已经阅读 realloc 将在指向的大小为 0 时充当 malloc,因此我在没有 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。见评论。)