Память под контейнеры выделяется в стеки или куче?

95
20 марта 2022, 00:20

как выделяется память под контейнеры vector, map в с++

Answer 1

Под элементы контейнера - в куче.1 2

Под сам контейнер - так же, как для любого другого объекта, это зависит от того, как он создан:

  • new std::vector<int> - в куче
  • void foo() {std::vector<int> vec;} - в стеке
  • ...

1 По умолчанию. Написав свой аллокатор, элементы можно поместить куда угодно.

2 Большинство реализаций std::string не выделяют буфер в куче, если в них немного элементов (не больше пары десятков). В таком случае символы хранятся в самом объекте контейнера. Насколько я знаю, другие стандартные контейнеры так не делают.

READ ALSO
Bitset. Изменение битов элементов

Bitset. Изменение битов элементов

Есть некоторые массивы

88
Что делает следующая строчка?

Что делает следующая строчка?

Есть динамический массив под названием buffer, который хранит в себе строку в стиле С(Например какое-нибудь предложение: Hello world) Что делает данная...

54
Как в MySql осуществить обход древа

Как в MySql осуществить обход древа

Имеется вот такая таблица

102
Настройка поддоменов на Spring Boot

Настройка поддоменов на Spring Boot

У меня есть выделенный сервер и домен examplecom

215