【发布时间】:2015-07-15 12:42:58
【问题描述】:
我已经阅读了一些方法,例如为已知数量的值执行此操作,例如:
new int[3] {0 , 0, 0};
这让我想起了C 中声明时初始化数组的方式
我问自己在C++ 中也可以这样做:
new int[n] {}
空括号导致所有内容都被0-initialized。
尝试后对我来说看起来不错,但也可能是由随机性和真实 UB 或其他原因引起的。
如果它是有效的,还有没有办法在一个特定的值上初始化?
注意:
我想实现与调用calloc (n, sizeof(int)); 相同的效果。但是因为我现在在C++ 而不是C,所以我不会再使用这些函数来保持代码的可读性。
注2:
说的时候
我想实现[...]
它对应于我的最小示例,我只是想获得一个零初始化的有效内存块。
【问题讨论】:
-
为什么不使用
std::array或std::vector? -
n是const类型的吗? -
@Slava 因为这是一个最小的例子,我只需要一个零初始化内存块,而不是任何向量或数组实现......
-
@awesomeyi:不,每次输入
new的范围时都会有所不同。 -
必须...不要...说... calloc。
标签: c++ new-operator