Почему реализация 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 раза больше памяти для простой программы. Чем отличается реализация, которая вызывает это несоответствие памяти? Должен ли я быть обеспокоен и как мне обойти это?