我们知道malloc给出了非空间内存,而calloc用零初始化内存。那么c ++中的new运算符在初始化对象时会给出什么值?
答案 0 :(得分:5)
假设对象有一个构造函数,它将调用默认构造函数。
但是int
,float
,double
,char
等对象,所有形式的指针等都没有默认构造函数[或者“空” “默认构造函数”,所以没有为那些人做任何事情 - 你得到new
为你获得的内存中发生的任何事情 - 这可能是零或以前分配的旧垃圾。
如果您特别想要,可以对new
创建的内存块使用“值初始化”,例如int *a = new int[size]();
[零初始化]。
答案 1 :(得分:0)
New基本上调用了一个对象构造函数,它取决于你想要初始化对象的方式。如果你没有初始化它,你将获得访问
的垃圾值