|
1
77
与一些人在回答中所说的相反,它 是
将零初始化所有字符(实际上,它被称为值初始化。但值初始化将是对标量类型数组的所有成员的零初始化)。如果那是你想要的。 值得注意的是,它也适用于没有用户声明构造函数的(数组的)类类型,在这种情况下,它们的任何成员都是值初始化的:
这不是什么延伸什么的。它在C++98中的工作方式和行为方式也相同。就在那里,它被称为默认初始化,而不是值初始化。但是,对于标量或标量或POD类型的数组,在这两种情况下都会执行零初始化。 |
|
|
2
11
没有,但是创建一个类似于calloc的新版本相当容易。这可以用与实现new的no-throw版本大致相同的方式来完成。
现在,您可以执行以下操作以获得新的零d内存
|
|
|
3
4
不,也不要想做这样的事情:
你最终可能会毁掉你的VTABLE(如果你的类有VTABLE的话)。 我建议使用构造函数来清除类的内部内存(变量)。 |
|
|
4
2
不。默认情况下,它将始终初始化已分配的项,而在基本体的情况下,该项不起任何作用。接下来,您必须使用std::uninitialized\u fill\n调用或类似调用。 |
|
|
5
2
您可以对运算符进行全局重载
任何单独重写new的类都不会得到特殊的
别忘了将两者都覆盖
请注意,这些简单的版本并不完全是它们应该是什么样的
|
|
|
6
1
要使用它:
|
|
|
7
0
不可以。您必须手动将内存归零。回想起
|
|
|
8
0
如果你不坚持使用
|
|
|
9
0
|
|
|
10
0
你可以说:
它使用new创建一个包含100个字符的连续数组,并将所有字符初始化为零。然后,您可以使用vector的[]运算符访问该数组,或执行以下操作:
注意,这也使您不必调用delete来释放分配的内存。 |
|
|
11
0
对
编辑: 请参阅@litb的帖子,他展示了如何使用非直接初始化将数组初始化为0,如上文所述。 |