como en el título: Dado un objeto de tipo de algunos contenedor STL (por ejemplo std::vector<int>
o std::set<MyClass>
) Me gustaría saber su consumo de memoria --- es --- cuánta memoria se consume para almacenar los elementos, el auxiliar datos para cada elemento y el tamaño del contenedor. Supongo que los objetos almacenados no asignan ninguna memoria adicional.¿Cómo medir el consumo total de memoria del contenedor STL?
Para una std::vector<int> v
puedo añadir:
sizeof(std::vector<int>) + v.capacity()*sizeof(int)
porque los vectores no almacenan todos los datos auxiliares por elemento. Pero, ¿cómo puedo hacerlo para otros contenedores?
Puedo vivir con una complejidad de tiempo no constante.
Probablemente sea mejor proporcionar su propio asignador de registro. Eso no funcionaría para el código existente, pero le permitiría seguir exactamente cuándo y cómo los contenedores asignan memoria. –