标量`new T`与数组`new T [1]`

问题描述 投票:4回答:1

[我们最近发现某些代码正在系统地使用new T[1](与delete[]正确匹配),我想知道这是否无害,或者所生成的代码是否存在某些缺点(在空间或时间/性能方面) 。当然,这隐藏在函数和宏层的后面,但这不重要。

从逻辑上看,我俩都相似,但是是吗?

是否允许编译器将此代码(使用文字1,而不是变量,但通过函数层将1转换为参数变量2或3次,然后使用new T[n]到达代码)变成标量new T

这两者之间还有其他需要考虑的事情/知识吗?

c++ new-operator
1个回答
2
投票

规则很简单:delete[]必须与new[]相匹配,并且delete必须与new相匹配:使用任何其他组合的行为是不确定的。

© www.soinside.com 2019 - 2024. All rights reserved.