Я пишу простой текстовый редактор, ну, на самом деле это блок управления редактированием, в котором я хочу написать код, числовые значения и выражения для моей основной программы.
Способ, которым я сейчас занимаюсь, заключается в том, что я передаю строки символов в элемент управления редактирования. В элементе управления редактирования у меня есть класс, который разбивает строку на «глифы», такие как слова, числа, разрывы строк, табуляции, маркеры форматирования и т. Д. Например, глифы слов содержат строку, представляющую буквальное слово, и короткое целое число, которое представляет количество конечных пробелов. Глифы также содержат информацию, необходимую для рисования текста и вычисления переноса строк.
Например, текстовая строка «Меня зовут Карл» будет равна связанному списку глифов:
NewLineGlyph → WordGlyph («Мой», 1 пробел) → WordGlyph («имя», 1 пробел) → WordGlyph («есть», 1 пробел) → WordGlyph («Карл», 0 пробел) → NULL.
Таким образом, вместо того, чтобы хранить строку в памяти как непрерывный блок символов (или WCHAR), она хранится небольшими порциями с потенциально большим количеством небольших выделений и освобождений.
Мой вопрос; я должен быть обеспокоен фрагментацией кучи, делая это таким образом? Есть ли у вас какие-либо советы, как сделать это более эффективным? Или совершенно другой способ сделать это? :)
PS. Я работаю в C ++ на Win7.