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

后端 未结 2 1677
臣服心动
臣服心动 2020-12-16 01:54

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.capa         


        
相关标签:
2条回答
  • 2020-12-16 02:52

    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.

    0 讨论(0)
  • 2020-12-16 02:53

    If you want to know the size of the data contained within the vector

    std::vector<int> vec;
    ...
    vec.size() * sizeof(decltype(bufferIn)::value_type))
    

    If the type is changed from int to say long long nothing else has to be changed. I find this solution safer then the one using the type in the sizeof because it one can easily be changed without the other.

    std::vector<long long> vec; // lets go from int to int64
    ...
    vec.size() * sizeof(int); // woops problem on the horizon
    
    0 讨论(0)
提交回复
热议问题