Где память для локального вектора C++ выделена?

Я заметил, что память для вектора выделяется динамично. Таким образом для локального вектора, где делает память, выделяется?

f(){

 vector<int> vi;
}
6
задан mjv 5 March 2010 в 16:26
поделиться

4 ответа

Вектор выделяется на стеке (28 байт в моей системе). Содержимое вектора выделяется на куче.

19
ответ дан 8 December 2019 в 03:09
поделиться

Вы можете изменить способ выделения памяти для контейнеров STL с помощью комбинации типа шаблона распределителя и объекта распределителя, переданного конструктору.

Я задал вопрос о том, как заставить вектор использовать стековое хранилище, и получил этот ответ. Возможно, вам будет интересно.

5
ответ дан 8 December 2019 в 03:09
поделиться

Чтобы расширить ответ Якоби, RAII означает что когда vi выходит за пределы области видимости, все, что выделено с помощью new (внутри вектора), является delete d (в деструкторе вектора). Вот как вы смешиваете выделение стека и кучи.

3
ответ дан 8 December 2019 в 03:09
поделиться

Вектор вектор выделяется везде, откуда аллокатор, который он использует, решит выделить.

В случае std::allocator по умолчанию используется ::operator new().

3
ответ дан 8 December 2019 в 03:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: