2

是否有一个函数(可以编写)可以知道用 new 定义的数组的大小:

  int *a=new int[3];
  *a=4;
  *(a+1)=5;
  *(a+2)=6;  

谢谢!

4

3 回答 3

8

没有一种标准的方法来获取分配给 的数组的大小new

数组分配的更好方法是std::vector,它确实有一个size()成员 - 当它超出范围时它会自动清理。

于 2013-04-20T16:04:19.997 回答
5

简短的回答:

改为使用std::vector

于 2013-04-20T16:04:23.877 回答
1

可以为此编写一个函数。但在现实世界中,这是一个糟糕的主意。

尽管调用的行为new很可能存储了分配的数组中的元素数量(或至少存储了它下面的实际分配的大小),但您无法以不依赖于了解new您的特定系统是如何工作的,如果您以不同的方式编译代码(例如代码的调试或发布版本)、更改编译器(或运行时库)的版本等,这可能会改变。

使用std::vector上述方法是一种更好的方法,因为您也不必担心在其他地方释放您的阵列。

如果出于某种原因,您不想 [或您的导师告诉您,您不能] 使用std::vector,您需要“记住”分配的大小。

于 2013-04-20T17:40:01.567 回答