1

オブジェクトのインスタンスをベクター (例: A a; vectorA.push_back(a)) に push_back しようとしていますが、ベクターのサイズが 16777216 (16*1024*1024) を超えると、再度 push_back しようとするとコードがクラッシュします。 ) (ベクトルの容量も 16777216 です。これは、ベクトルがメモリを再割り当てすることを意味します)。

問題にどのように対処すればよいか知っている人はいますか? 使用メモリは約320MBであることが確認されました。

4

2 に答える 2

0

reserve()すべてのデータをプッシュする前に呼び出してみてください。これにより、一部のメモリが事前に割り当てられるため、非常に多くの再割り当てが回避されます。16777216 を超える要素があることがわかっている場合、reserve(n)whereの呼び出しは 16777216 を超えるn数値であり、わかっている場合は最終的なサイズに近づきます。

于 2013-07-25T16:37:19.190 に答える