用new定义的数组大小

Size of array defined with new?

本文关键字:数组 new 定义      更新时间:2023-10-16

是否有一个函数(可以编写)允许知道用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,你需要"记住"分配的大小。