首页 > 后端开发 > C++ > new int[0] 可以在 C 中分配内存吗?有什么影响?

new int[0] 可以在 C 中分配内存吗?有什么影响?

Patricia Arquette
发布: 2024-12-29 18:00:26
原创
862 人浏览过

Can `new int[0]` Allocate Memory in C  , and What are the Implications?

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板