我正在编写一个基本的文本编辑器,实际上它是一个编辑控件框,我想在其中为我的主程序编写代码、数字值和表达式。目前的做法是将字符串输入到编辑控件中。在编辑控件中,我有一个类,可以将字符串分解成“字形”,如单词、数字、换行符、制表符、格式标记等。例如,单词字形包含一个表示文字的字符串和一个表示尾随空格数的短整数。这些字形还包含绘制文本和计算换行所需的信息。
例如,文本行“My name is Karl”将等于一个字形的链接列表: NewLineGlyph → WordGlyph (“My”, 1空格) → WordGlyph (“name”, 1空格) → WordGlyph(“is”, 1空格 ) → WordGlyph (“Karl”, 0空格) → NULL。
因此,与将字符串存储在内存中作为连续的字符块(或WCHARs)相比,它以小块存储,并且可能有许多小的分配和释放。
我的问题是:当这样做时,我应该担心堆碎片吗?您有任何使其更有效率的建议或完全不同的方法吗? :)
PS. 我正在Win7上使用C++。
例如,文本行“My name is Karl”将等于一个字形的链接列表: NewLineGlyph → WordGlyph (“My”, 1空格) → WordGlyph (“name”, 1空格) → WordGlyph(“is”, 1空格 ) → WordGlyph (“Karl”, 0空格) → NULL。
因此,与将字符串存储在内存中作为连续的字符块(或WCHARs)相比,它以小块存储,并且可能有许多小的分配和释放。
我的问题是:当这样做时,我应该担心堆碎片吗?您有任何使其更有效率的建议或完全不同的方法吗? :)
PS. 我正在Win7上使用C++。