Ваш вопрос немного сложен для анализа, и я думаю, что пример кода сделал бы это проще.Прав ли я, если предположить, что у вас есть класс, содержащий строку, например:
class foo {
public:
std::string str;
};
, и вам интересно, как изменяется размер строки?Позвольте мне попытаться объяснить: размер объектов класса foo фиксирован.Размер строкового члена также является фиксированным, но он содержит в своей реализации указатель на дополнительную динамическую память (где-то еще), которая увеличивается или уменьшается в зависимости от содержимого строки.Реализация std :: string позаботится об этом за вас, вам не нужно беспокоиться об этом.Также не будет переполнения памяти - строковая память отличается от той, что используется объектом foo, например.