我想分配一个大小为1765880295的向量,所以我使用了resize(1765880295),但是程序停止运行。调整问题是代码块无响应。
有什么不对?
尽管max_size给出的4294967295大于1765880295,但即使没有调整矢量大小,问题仍然是相同的。
答案 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的可用内存来分配那个巨大的载体。