【问题标题】:Size of array defined with new? [duplicate]用新定义的数组大小? [复制]
【发布时间】:2013-04-13 21:25:27
【问题描述】:

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

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

谢谢!

【问题讨论】:

  • 注意:指示的“重复”问题具有有意义但不完整的答案,因为该问题特定于相关但不同的编程语言 - 以及不同的分配函数。

标签: c++ arrays new-operator sizeof


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    简短回答:

    请改用std::vector

    【讨论】:

      【解决方案3】:

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

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

      使用提到的std::vector 是一种更好的方法,因为这样您就不必担心在其他地方释放您的数组。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-09
        • 1970-01-01
        • 2012-09-11
        • 2015-07-06
        相关资源
        最近更新 更多