无法将矢量调整为1765880295

时间:2014-04-02 17:55:16

标签: c++

我想分配一个大小为1765880295的向量,所以我使用了resize(1765880295),但是程序停止运行。调整问题是代码块无响应。

有什么不对?

尽管max_size给出的4294967295大于1765880295,但即使没有调整矢量大小,问题仍然是相同的。

2 个答案:

答案 0 :(得分:0)

根据向量中存储的内容 - 例如,32位指针或uint32,向量的大小(元素数量*每个元素的大小)将超过32位上的最大可寻址空间系统

答案 1 :(得分:0)

max_size取决于实现(有些可能有1073741823作为其max_size)。但即使您的实现支持更大的数字,如果内存不足,程序也会失败。

例如:如果您有vector<int>sizeof(int) == 4 // bytes,我们会进行数学计算,并且......

1765880295 * 4 bytes = 7063521180 bytes ≈ 6.578 gygabytes

所以你需要大约6.6GiB的可用内存来分配那个巨大的载体。