2013-10-06 200 views

回答

11
int *a = new int; 

a指向缺省初始化对象(它是未初始化对象情况下即所述值是不确定的按照标准)。

int *a = new int(); 

a指向值初始化对象(它是零初始化对象在情况下即所述值是零按照标准)。

+3

分别对于初始化,零初始化和默认初始化的情况,C++ 11§8.5,p7,C++ 11§8.5,p5和C++ 11§8.5,p6分别介绍了OP有兴趣(我非常怀疑它)。 – WhozCraig

+4

请注意,测试可能不会暴露这种差异:与自动存储不同,动态分配的内存在简单测试程序中通常会最终为零,并且在较早的内存被重用时只在较大的程序中包含“垃圾”。 – hvd

5

第一个变种默认初始化动态分配int,这对于内置类型,例如int不执行任何初始化。

的第二变型值初始化它,这对于int意味着零初始化,给它的价值0

相关问题