有多少新的内存初始化对象?

时间:2013-07-27 08:47:35

标签: c++

我们知道malloc给出了非空间内存,而calloc用零初始化内存。那么c ++中的new运算符在初始化对象时会给出什么值?

2 个答案:

答案 0 :(得分:5)

假设对象有一个构造函数,它将调用默认构造函数。

但是intfloatdoublechar等对象,所有形式的指针等都没有默认构造函数[或者“空” “默认构造函数”,所以没有为那些人做任何事情 - 你得到new为你获得的内存中发生的任何事情 - 这可能是零或以前分配的旧垃圾。

如果您特别想要,可以对new创建的内存块使用“值初始化”,例如int *a = new int[size](); [零初始化]。

答案 1 :(得分:0)

New基本上调用了一个对象构造函数,它取决于你想要初始化对象的方式。如果你没有初始化它,你将获得访问

的垃圾值