【发布时间】:2012-11-27 21:13:26
【问题描述】:
在 C++11 中,当我使用 T *array = new T[n]; 分配动态数组时,它已经归零(使用 gcc 4.7.2,Ubuntu 12.10 64 位)。
- 这是 C++11 规范强制要求的吗?
- 如何在不将其项归零的情况下分配数组?这应该会快一点。
编辑:我已经检查了T = int。
gcc cxx-flags:-std=gnu++11 -O3 -ffast-math -fno-rtti
【问题讨论】:
-
可能是编译器标志?在 Visual Studio 中,这将在调试版本中发生,但不会在发布中发生
-
@emartel 好吧,我检查过了,我在发布模式下构建。我会在问题中添加标记。
-
T是什么类型的?将为每个 T 触发默认构造函数;如果该构造函数只是“将其归零”,那么您会看到这一点。如果 T 是 POD,则不能保证使用 new 进行零初始化。
-
不保证零初始化。见this recent related question。
标签: c++ memory-management c++11