在 realloc() 之前是否需要 malloc()?
因为我已经读到,如果指向的大小为 0,realloc 将充当 malloc,所以我在没有 malloc() 的情况下使用它,前提是指针是静态的、全局的,或者如果是自动的,则显式设置为 NULL。
然而,我注意到很多程序员尝试设置它或将其设置为 malloc(1)。需要吗?
Since I had read realloc will act as malloc if the size pointed is 0, I was using it without malloc(), provided the pointer was static, global, or explicitly set to NULL if automatic.
However, I notice a lot of programmers try to set it or set it to malloc(1). Is it needed?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
来自Open Groups 规范:
From Open Groups' specifications:
malloc
不是必需的,您可以仅使用realloc
。malloc(n)
相当于realloc(NULL, n)
。然而,使用
malloc
而不是realloc
的特殊语义通常更清晰。问题不在于什么有效,而在于不让阅读代码的人感到困惑。(编辑:删除了
realloc
充当free
的提及,因为它不是标准 C。请参阅评论。)malloc
is not required, you can userealloc
only.malloc(n)
is equivalent torealloc(NULL, n)
.However, it is often clearer to use
malloc
instead of special semantics ofrealloc
. It's not a matter of what works, but not confusing people reading the code.(Edit: removed mention of
realloc
acting asfree
, since it's not standard C. See comments.)