【发布时间】:2011-07-19 08:37:02
【问题描述】:
ISO/IEC 9899:TC2(即 C99 标准),§7.20.3 规定:
如果请求的空间大小为零,则行为是实现定义的: 返回一个空指针,或者行为就像大小是一些 非零值,但返回的指针不得用于访问对象。
换句话说,malloc(0) 可能返回 NULL 或我不能取消引用的有效指针。
这种行为背后的原因是什么?
仅仅定义 malloc(0) 导致 UB 不是更容易吗?
【问题讨论】:
-
我没想到有人会争论 C99 应该有更多的一件事是未定义的行为。
-
@yes123:我不明白你为什么会这样做,但你可能会调用 malloc(n) 而不检查 n == 0。
-
另请阅读接受的答案here
标签: c++ c memory-management malloc