Почему реализация stc :: string в libc ++ занимает 3x памяти как libstdc ++?

Рассмотрим следующую тестовую программу:

#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";
}

Выход дляlibstdc++ а такжеlibc++ соответственно:

8 80 104
24 240 264

Как вы видете,libc++ занимает 3 раза больше памяти для простой программы. Чем отличается реализация, которая вызывает это несоответствие памяти? Должен ли я быть обеспокоен и как мне обойти это?

Ответы на вопрос(4)

Ваш ответ на вопрос