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