首页 > 后端开发 > C++ > C 中的 new 运算符总是将内存初始化为零吗?

C 中的 new 运算符总是将内存初始化为零吗?

Barbara Streisand
发布: 2024-12-10 22:27:26
原创
247 人浏览过

Does the `new` Operator in C   Always Initialize Memory to Zero?

运算符 new 将内存初始化为零

尽管人们普遍误解 new 运算符不会用零初始化内存,但它确实可以实现这一点特定条件下的任务。

在 C 中,new 运算符执行零的情况主要有两种初始化:

  1. 括号初始化:

    当 new 后面跟着括号和一个空的初始化列表时,例如 wsk = new unsigned int() ;,它显式调用该类型的默认构造函数。对于像 unsigned int 这样的基本类型,默认构造函数会将内存初始化为零。

  2. 带括号的数组初始化:

    与之前的场景类似,在数组声明中使用括号和空的初始化列表,例如 wsa = new unsigned int[5]();,初始化每个数组元素为零。

在提供的示例代码中,以下几行展示了零初始化:

wsk2 = new unsigned int(5);
登录后复制

这将 wsk2 初始化为值 5。

wsk2 = new unsigned int;
登录后复制

这会将 wsk2 初始化为零,因为它使用括号语法而没有初始化列表。此行为适用于标量和数组。

在示例的第二部分中,输出确认了零初始化:

wsk2: 0x928e008 5
wsk2: 0x928e008 0
登录后复制

第一行显示 wsk2 指向地址 0x928e008并且包含值 5。删除 wsk2 并使用 new unsigned int; 创建另一个后,第二行显示它现在指向相同的地址(0x928e008) 但包含零。

以上是C 中的 new 运算符总是将内存初始化为零吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

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