При использовании вектора отображается «Недостаточно памяти».
Чтобы исправить это, я использую max_size () для проверки, затем резервирую или push_back.
Если max_size () больше зарезервированного значения, оно должно быть в порядке, но это не так! Тогда что означает max_size ()?
Я компилирую ниже демо в Windows 7 и Visual Studio 2010. Мой компьютер имеет 4 ГБ оперативной памяти. Когда повторное обращение равно 1/2 от max_size (), оно завершается неудачно.
max_size()=2^32/sizeof(CPoint3D)-1=268435455
Это нормально, когда 1/4 max_size () в демоверсии. В моем реальном проекте все нормально до 1/10.
Какое значение имеет максимальный размер вектора, как его увеличить ?
Я получил ошибку «недостаточно памяти», когда я вставил много элементов в std::vector
. Чтобы избежать ошибки, я сначала проверил с помощью vector::max_size()
, а для предварительного выделения памяти использовал vector::reserve()
. Тем не менее, это не работает. В демонстрационном проекте ошибка возникает, когда я резервирую 1/4 от max_size
. В реальном проекте ошибка возникает, когда я резервирую 1/10 его. Я использую Windows 7 и компилирую с Visual Studio 2010. Мой компьютер имеет 4 ГБ ОЗУ.
Если max_size
не работает, как узнать максимальное количество элементов, которое я могу выделить для vector
?