动态数组分配末尾的 () 是啥意思?

Posted

技术标签:

【中文标题】动态数组分配末尾的 () 是啥意思?【英文标题】:What does the () at the end of dynamic array allocate mean?动态数组分配末尾的 () 是什么意思? 【发布时间】:2011-04-05 12:30:24 【问题描述】:

我在一个不同的问题中看到了一些类似下面的例子,这是我以前从未见过的。

new int[m_size]();
               ^^

我一直都看到并使用过new int[m_size] 版本,但最后没有() 版本。

【问题讨论】:

***.com/questions/620137/… 【参考方案1】:

两个字:Value Initialization

new int[m_size](); 数组元素将通过写入 () 进行零初始化,因为 () 意味着值初始化。1(基元类型的零初始化)

1: 初始化器为空括号集的对象,即 (),应进行值初始化。 ($8.5/7)

【讨论】:

啊!那么它值初始化哪种类型呢?是整个表达式的指针类型还是数组的各个成员? @MeThinks:查看8.5/5(值初始化)。对于原始类型 值初始化 => 零初始化。在这种情况下,数组的所有元素将被初始化为0 好的。在标准中得到它“如果 T 是一个数组类型,那么每个元素都是值初始化的”。感谢您的及时回复。我第一次遇到关于数组的问题。【参考方案2】:

这意味着所有元素都是zero initialized,类似于calloc(o,sizeof(int)),使用这个calloc,你用0在堆上初始化一个整数

【讨论】:

以上是关于动态数组分配末尾的 () 是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

在动态分配的数组上使用 auto_ptr 的正确方法是啥?

Java动态数组

20150411数组

vector中push_back函数的意思是啥

c++ dynamic的问题

怎么动态分配指针数组