小编典典

如何在 C++ 中使用 new 运算符初始化内存?

all

我刚开始接触 C,我想养成一些好习惯。如果我刚刚int使用new运算符分配了一个类型数组,我如何将它们全部初始化为 0
而无需自己循环遍历它们?我应该使用memset吗?有没有“淐
”的办法呢?


阅读 64

收藏
2022-07-14

共1个答案

小编典典

这是 C++ 一个令人惊讶的鲜为人知的特性(这一点可以从没有人给出这个答案的事实中得到证明),但它实际上具有用于值初始化数组的特殊语法:

new int[10]();

请注意,您 必须 使用空括号 - 例如,您不能使用(0)或其他任何东西(这就是为什么这仅对值初始化有用)。

这是 ISO C++03 5.3.4[expr.new]/15 明确允许的,它说:

创建类型对象的 new 表达式T按如下方式初始化该对象:

  • 如果 new-initializer 的形式为(),则该项为值初始化(8.5);

并且不限制允许这样做的类型,而该(expression-list)形式受到同一节中的进一步规则的明确限制,因此它不允许数组类型。

2022-07-14