gpt4 book ai didi

c++ - 查找动态分配数组的大小

转载 作者:IT老高 更新时间:2023-10-28 13:01:11 26 4
gpt4 key购买 nike

为什么无法获取以这种方式分配的缓冲区的长度。

AType * pArr = new AType[nVariable];

当同一个数组被释放时

delete [] pArr;

运行时必须知道要释放多少。在删除数组之前有什么方法可以访问长度。如果没有,为什么没有提供这样的 API 来获取长度?

最佳答案

Is there any means to access the length before deleting the array?

没有。没有办法确定。
该标准不要求实现记住并提供通过 new 请求的元素数量的详细信息。
该实现可以简单地在分配的内存块的末尾插入特定的位模式,而不是记住元素的数量,并且可以在释放内存时简单地查找模式。
简而言之,这只是一个实现细节。


附带说明,有两个选项可以实际解决这个问题:

  1. 您可以简单地使用 std::vector 它为您提供成员函数,如 size()
  2. 您可以简单地自己做簿记。

new atleast 分配足够多的内存以满足您的要求。
您已经知道您请求了多少内存,因此您可以轻松计算长度。您可以使用 sizeof 找到每个项目的大小。

Total memory requested / Memory required for 1 item = No of Items

关于c++ - 查找动态分配数组的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12617244/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com