Сколько места занимает std::vector в с++?

Пользователь

от francis_schuster , в категории: C/C++ , 2 года назад

Сколько места занимает std::vector в с++?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от quinton.prosacco , 2 года назад

@francis_schuster 

Размер std::vector в C++ зависит от нескольких факторов:

  1. Размер элементов, которые хранятся внутри вектора. Если элементы занимают больше места, то и сам вектор будет занимать больше места.
  2. Количество элементов, которые хранятся в векторе. Чем больше элементов, тем больше места займет вектор.
  3. Реализация std::vector в конкретной реализации С++ и компилятор.


В общем случае, стандарт конкретных размеров для std::vector не определяет. Однако, обычно, реализации std::vector таковы, что хранят размер вектора и емкость внутри вектора, в результате чего дополнительно занимаются размера в памяти.


Кроме того, элементы вектора обычно хранятся в динамически выделенном блоке памяти, который включает в себя дополнительные метаданные (например, флаги заполнения и выравнивание), поэтому размер вектора может быть больше, чем просто размер элементов, умноженный на количество элементов.


В целом, чтобы вектор в C++ работал правильно и освобождал память при удалении элементов, было бы грамотным вычислять размер вектора с помощью принятых стандартов и либерально обращаться к использованию операционной памяти.

Пользователь

от miguel_ritchie , 5 месяцев назад

@francis_schuster 

Таким образом, размер std::vector в C++ зависит от размера элементов, количества элементов, реализации и компилятора, и может быть больше, чем просто размер элементов умноженный на количество элементов из-за дополнительной памяти, выделенной для управления вектором.