请考虑以下代码:
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个案例(new
或new
)中调用哪个new[]
版本以及如何删除arr1
和{{ 1}}(使用arr2
或delete
)?
答案 0 :(得分:9)
第一种情况分配一维数组,第二种情况分配二维数组。它们都必须通过delete[]
发布,否则你将得到未定义的行为。
答案 1 :(得分:1)
在这两种情况下都会使用new[]
。您可以通过为operator new[]
定义SomeType
并在屏幕上打印内容来自行验证。您将看到它将在两种情况下打印。