Возможно, вы имеете в виду, как это делается с помощью std :: vector (или другого контейнера) при загрузке его с памятью, удалите все элементы, затем позвоните, чтобы освободить память, а затем выделите в нее новые элементы, таким образом выделяя больше памяти? В этом случае, по мере увеличения объема памяти в контейнере, контейнер может перераспределить свою память по мере необходимости.
Поскольку вы упоминаете вы создаете Vector:
В проектах, где мы должны были это сделать, потому что мы не имеем вектор реализации (встроенный), он является общим для выделения набора куска памяти больше, чем требуется для предотвращения постоянных перераспределений памяти, которые несут большие затраты на копирование и вызывают фрагментацию памяти. Общая схема заключалась в том, чтобы выделить «разумный» размер для приложения, а затем удвоить этот размер, если предел достигнут. Если пользователь когда-либо запрашивал, чтобы буфер был уменьшен по размеру или был установлен на размер при инициализации, мы игнорируем эту эвристику и используем запрошенный размер.
Что вы имеете в виду по перераспределить? Можете ли вы дать свой вариант использования? –
Если вы имеете в виду функцию stdlib 'realloc', то да, нет альтернативы C++. –
Вы имеете в виду без использования realloc()? BTW, realloc frees и память mallocs позади сцены в любом случае по своему усмотрению. –