考虑以下代码:
typedef SomeType type_t[2];
SomeType * arr1 = new type_t; //new or new[] ???
type_t * arr2 = new type_t[3]; //new or new[] ???根据标准,在第一和第二种情况下将调用哪个版本的new ( new或new[]),以及如何删除arr1和arr2 (使用delete或delete[])?
发布于 2011-03-20 22:19:40
第一种情况分配一维数组,第二种情况分配二维数组。这两个都必须通过delete[]发布,否则会得到未定义的行为。
发布于 2011-03-20 22:26:48
它在这两种情况下都将使用new[]。您可以自己验证这一点,方法是为SomeType定义operator new[]并在屏幕上打印一些内容。您将看到它在两种情况下都会被打印出来。
https://stackoverflow.com/questions/5368988
复制相似问题