Por que a implementação do std :: string da libc ++ ocupa 3x de memória como libstdc ++?

Considere o seguinte programa de teste:

#include <iostream>
#include <string>
#include <vector>

int main()
{
    std::cout << sizeof(std::string("hi")) << " ";
    std::string a[10];
    std::cout << sizeof(a) << " ";
    std::vector<std::string> v(10);
    std::cout << sizeof(v) + sizeof(std::string) * v.capacity() << "\n";
}

Saída paralibstdc++ elibc++ respectivamente são:

8 80 104
24 240 264

Como você pode ver,libc++ leva 3 vezes mais memória para um programa simples. Como a implementação difere e causa essa disparidade de memória? Preciso me preocupar e como solucionar isso?

questionAnswers(4)

yourAnswerToTheQuestion