What is the overhead cost of an empty vector?

flevine100 picture flevine100 · Feb 17, 2009 · Viewed 13.1k times · Source

What is the memory overhead of having an empty vector vs having a pointer to a vector?

Option A:

std::vector<int> v;

Option B:

std::vector<int> *v = NULL;

I believe that option B takes 1 32 bit pointer (assuming 32 bit here) How much memory does the empty 'v' take up?

Answer

&#201;ric Malenfant picture Éric Malenfant · Feb 17, 2009

As for the question as asked: It depends on the implementation. With MSVC 7.1 this:

std:: cout << sizeof(std::vector<int>) << std::endl;

gives me 16 (bytes). (3 pointers: begin, end, and end of capacity, plus an allocator)

However it should be noted that the pointer-to-vector gives it a larger overhead:

  • in both time and space in the non-empty case
  • in complexity in all cases.