Он зависит от библиотеки. Вы не должны полагаться на размер объектов std::string
, потому что это может измениться в разных средах (очевидно, между разными поставщиками стандартной библиотеки, но также между разными версиями одной и той же библиотеки).
Хранить в что реализация std::string
написана людьми, которые оптимизированы для различных вариантов использования, что обычно приводит к двум внутренним представлениям: одному для коротких строк (небольшой внутренний буфер) и одному для длинных строк (выделенному кучей внешнему буферу). Накладные расходы связаны с удержанием обоих из них внутри каждого объекта std::string
.