新的或新的[]运算符

时间:2011-03-20 14:13:07

标签: c++ new-operator delete-operator

请考虑以下代码:

typedef  SomeType type_t[2];
SomeType * arr1 = new type_t; //new or new[] ???
type_t * arr2 = new type_t[3]; //new or new[] ???

根据标准在{1}和第2个案例(newnew)中调用哪个new[]版本以及如何删除arr1和{{ 1}}(使用arr2delete)?

2 个答案:

答案 0 :(得分:9)

第一种情况分配一维数组,第二种情况分配二维数组。它们都必须通过delete[]发布,否则你将得到未定义的行为。

答案 1 :(得分:1)

在这两种情况下都会使用new[]。您可以通过为operator new[]定义SomeType并在屏幕上打印内容来自行验证。您将看到它将在两种情况下打印。