gpt4 book ai didi

c++ - vector初始化的一些问题

转载 作者:搜寻专家 更新时间:2023-10-31 00:51:30 27 4
gpt4 key购买 nike

我可以用 10^8 初始化 vector ,但我不能用 10^9 初始化它。为什么?

 vector<int> bucket;
bucket.resize(100000000); √
bucket.resize(1000000000); ×

最佳答案

这是因为resize 函数会从堆中申请内存。正如你所想的那样,第二次调整大小操作的大小将是 4000000000 字节,这大于你的系统可以分配的空间(可能是你的计算机找不到一​​ block 连续的空间给你),并且会导致异常和失败。

您可以申请的最大内存取决于以下多种原因:

  1. 物理内存的硬件限制。
  2. 操作系统位(32 或 64)
  3. 留给用户的内存。操作系统应该首先满足内核的需要。一般而言,windows 内核比 linux 或 unix 需要更多的内存。
  4. ..

总之,很难知道您可以使用的准确内存大小,因为它是一个动态值。但是可以通过new operator粗略估算,and here is a good reference.

关于c++ - vector初始化的一些问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54938877/

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