C 中可以使用“new int[0]”分配空数组吗?
C 中,使用 new 运算符进行分配经常会用到记忆力。然而,出现了一个关于使用 new int[0] 分配空数组的问题。这段代码是否分配内存,标准对此有何规定?
标准视角
根据C标准的5.3.4/7,当直接-new-declarator 表达式的计算结果为零,分配函数分配一个没有元素的数组。尽管如此,3.7.3.1/2 强调取消引用由零大小请求产生的指针会导致未定义的行为。
实践
尽管标准允许分配空数组时,它会警告此操作仍可能失败。因此,只能安全地将分配的内存传递给数组删除以进行释放,从而避免任何直接内存访问。
特别说明
标准中的脚注表明行为模仿 C 中的 malloc() 或 calloc() 方法,其中零请求返回非空指针。这种与 C 的偏差确保了跨平台的互操作性,并允许 C 中的空数组分配。
以上是new int[0] 可以在 C 中分配内存吗?有什么影响?的详细内容。更多信息请关注PHP中文网其他相关文章!