是否有一个函数(可以编写)可以知道用 new 定义的数组的大小:
int *a=new int[3];
*a=4;
*(a+1)=5;
*(a+2)=6;
谢谢!
是否有一个函数(可以编写)可以知道用 new 定义的数组的大小:
int *a=new int[3];
*a=4;
*(a+1)=5;
*(a+2)=6;
谢谢!
没有一种标准的方法来获取分配给 的数组的大小new
。
数组分配的更好方法是std::vector
,它确实有一个size()
成员 - 当它超出范围时它会自动清理。
简短的回答:不。
改为使用std::vector
。
可以为此编写一个函数。但在现实世界中,这是一个糟糕的主意。
尽管调用的行为new
很可能存储了分配的数组中的元素数量(或至少存储了它下面的实际分配的大小),但您无法以不依赖于了解new
您的特定系统是如何工作的,如果您以不同的方式编译代码(例如代码的调试或发布版本)、更改编译器(或运行时库)的版本等,这可能会改变。
使用std::vector
上述方法是一种更好的方法,因为您也不必担心在其他地方释放您的阵列。
如果出于某种原因,您不想 [或您的导师告诉您,您不能] 使用std::vector
,您需要“记住”分配的大小。