c++ - 当您不知道确切的元素数量但可以估计上限时,分配比数组所需更多的内存是否可以?

标签 c++ memory memory-management dynamic-memory-allocation

C++。

我想创建一个数组并在其中存储元素。而且我可以估计在大多数情况下都是正确的元素数量的上限,比方说大约 98% 的情况。创建大小等于上限的静态数组而不是动态分配在速度和美观方面更好吗? 更具体地说,假设元素的数量在 10000 到 60000 之间变化,每个元素 2 个字节。在极少数情况下,该金额可能会高于 60000(在这种情况下,我将不得不重新分配)。

是否可以静态分配大小为 60000 的数组并使用其中的一部分,并且在某些情况下重新分配到更大的大小,或者这种做法太丑陋了?

最佳答案

只需使用 std::vector,它可以让您根据需要调整大小并保留估计的最大大小以提高性能。如果愿意,您甚至可以将其设置为静态/全局变量,但这样就会遇到全局变量的常见问题。

除非您非常频繁地创建 vector 的新实例(我怀疑对于如此大的大小,否则这应该具有良好的性能。

关于c++ - 当您不知道确切的元素数量但可以估计上限时,分配比数组所需更多的内存是否可以?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33218267/

相关文章:

c++ - 将 std::initializer_list 作为非类型模板参数传递

c++ - UML 类图 C++ 结构

c++ - 嵌套包含语句,便于 c/c++ 编程

java - 解决Java内存泄漏的一般策略?

delphi - FastMM 无法检测内存泄漏

objective-c - 如何在子类中复制NSArray内存语义

ios - Xcode 修复内存问题

c++ - 使用 boost::algorithms::join 提取和连接字符串

c# - 尝试直接从内存中读取 (C#)

java - 在批处理模式下运行 matlab 时如何增加 java 堆内存大小