Ответ 1
Пока общий интерфейс std::vector
определяется стандартом, могут быть разные реализации: другими словами, что под капотом std::vector
может измениться с реализации на реализацию.
Даже в той же реализации (например: реализация STL, которая поставляется с данной версией Visual С++), внутренние элементы std::vector
могут изменяться из версий сборки и отладочных сборников.
24 размер, который вы видите, можно объяснить как 3 указателя (каждый указатель имеет размер 8 байтов на 64-разрядных архитектурах, поэтому у вас есть 3 x 8 = 24 байта). Эти указатели могут быть:
- начало вектора
- конец вектора
- конец зарезервированной памяти для вектора (т.е. векторная емкость)