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?