Search code examples
c++vectorsizeof

sizeof() std::vector (C++)


There is a topic already on this topic but I have doubts still. To calculate the size of a vector, which one is correct:

sizeof(VEC) + sizeof(int) * VEC.capacity()

or

VEC.capacity() * (sizeof(VEC) + sizeof(int))

Solution

  • What do you mean by size of the vector? The size of the vector object is just

    sizeof(vec);
    

    If you are interested in how much memory the vector has allocated on the heap, you can use

    vec.capacity()*sizeof(T)
    

    So, if you add these, you'll get how much memory you've "lost" because of the vector.

    vec.capacity()*sizeof(T) + sizeof(vec)
    

    Please note that exactly how much memory is allocated is implementation-dependent. It's just that the formula above will be practically correct (or approximately correct) on most if not all implementations.