这段代码合法吗?
int * a = new int[1];
delete a;
还是这个?
int * a = new int;
delete [] a;
显然,这似乎并不正确,至少应该气馁,但会不会引起任何实际问题(内存泄漏等等)?
答案 0 :(得分:5)
匹配组合必须: -
new; delete;
new[]; delete[];
如果你混淆这些,你会得到未定义的行为。由于这个原因,我看到代码爆炸了。
答案 1 :(得分:0)
没有。如果您new
,则应delete
。如果你new[]
,你应该delete[]
。
答案 2 :(得分:0)
混合标量和数组(de)分配运算符会导致未定义的行为。 delete和delete []之间的定义差异是后者为数组的所有元素调用析构函数。