【发布时间】:2016-03-18 02:03:15
【问题描述】:
我正在测试将向量初始化为运行时可能的最大大小。最初,我认为(size_t)-1 给了我一个理论上的最大值,而vector::max_size() 给出了真正的运行时间最大值。在遇到应用程序失败并问这个question之后,我意识到这也是另一个理论限制。进一步的研究出现了this:
(向量可以达到的最大大小)受限于操作系统可以为您分配的最大连续 RAM 块或向量::max_size() 的返回值,以较小者为准。
在向量(可能还有一般的容器)中,我如何找到这个真正的运行时最大值?我目前仍在构建我的应用程序(这是一个实践项目),所以我会接受任何可以给出精确值或接近但安全的近似值的合理优雅和有效的解决方案。
【问题讨论】:
-
如果您使用指针和
new关键字,则向量存储在程序执行期间分配的动态内存(堆)中。此外,c++ 允许您更改数据结构的类型,例如,您可以使用在每个元素创建期间分配的内存块创建一个链表,并且操作系统会找到它可以使用的内存块,直到所有 RAM 都吐司跨度>
标签: c++ vector initialization runtime dynamic-memory-allocation