2011-02-15 1 views
0

Я хочу динамически выделять набор объектов (может быть несколько сотен). Часть этих объектов - это текстовые поля. Поскольку std :: string предлагает хорошие строковые манипуляции, я бы предпочел иметь параметры объекта-объекта типа std: string.STD :: string как параметр-член для динамически выделенных объектов

Однако std :: string является динамически изменяемым по размеру объектом. Для меня это противоречит динамически выделенным объектам, содержащим std :: string: может быть выделено переполнение памяти, если std :: string становится больше запланированного.

  • Могу ли я просить совета, подходит ли std :: string в качестве параметра для динамически выделенных объектов?
  • Как манипулировать с помощью std :: string, поэтому не будет переполнения памяти?
  • Является ли std :: string подходящим как параметр параметра, даже если сотни объектов будут распределены динамически?

ответ

1

Ваш вопрос немного сложный для синтаксического анализа, и пример кода сделал бы это проще, я думаю. Могу ли я прав, полагая, что у вас есть класс, который содержит строку, например, так:

class foo { 
    public: 
    std::string str; 
}; 

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

+0

Спасибо за ваш комментарий. Вы хорошо поняли мой вопрос и ответили на него. Я понимаю суть, и я вижу, что мне не нужно беспокоиться о изменении размера std :: string. Я отмечаю этот ответ как * Доступный ответ * и добавление +1. –

Смежные вопросы