[我们最近发现某些代码正在系统地使用new T[1]
(与delete[]
正确匹配),我想知道这是否无害,或者所生成的代码是否存在某些缺点(在空间或时间/性能方面) 。当然,这隐藏在函数和宏层的后面,但这不重要。
从逻辑上看,我俩都相似,但是是吗?
是否允许编译器将此代码(使用文字1,而不是变量,但通过函数层将1
转换为参数变量2或3次,然后使用new T[n]
到达代码)变成标量new T
这两者之间还有其他需要考虑的事情/知识吗?
规则很简单:delete[]
必须与new[]
相匹配,并且delete
必须与new
相匹配:使用任何其他组合的行为是不确定的。