我正在尝试将对象的实例推回向量(例如A a; vectorA.push_back(a))
但是一旦向量的大小大于16777216(16 * 1024 * 1024)(向量的容量也为16777216,这意味着向量将重新分配内存),则每当我尝试将push_back更多时,代码就会崩溃。

有人知道我该如何处理这个问题?我检查使用的内存约为320MB。

最佳答案

由于std :: vector是基本C数组的包装器,因此它具有与普通数组相同的限制,在此处进行了描述:Is there a max array length limit in C++?
基本上我同意上面的评论,这是连续的内存限制。
要解决此问题,您可以从使用std :: vector切换到其他一些不使用数组的类(根据需要,如map,list或deque)。
另一种解决方案是使用多个向量。

10-06 14:45