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