私は基本的なテキスト エディターを作成しています。実際には、メイン プログラムのコード、数値、および式を記述したい編集コントロール ボックスです。
私が現在行っている方法は、文字列をエディット コントロールにフィードすることです。エディット コントロールには、文字列を単語、数字、改行、タブ、フォーマット トークンなどの「グリフ」に分割するクラスがあります。たとえば、単語グリフには、リテラル ワードを表す文字列と、それを表す短い整数が含まれます。末尾の空白の数。グリフには、テキストを描画して行の折り返しを計算するときに必要な情報も含まれています。
たとえば、テキスト行「私の名前はカール」は、次のようなグリフのリンクされたリストと等しくなります。 whitespace ) → WordGlyph (“Karl”, 0 whitespace) → NULL.
そのため、文字列を char (または WCHAR) の連続ブロックとしてメモリに格納する代わりに、多数の小さな割り当てと割り当て解除が行われる可能性のある小さなチャンクに格納されます。
私の質問は; この方法で行う場合、ヒープの断片化に注意する必要がありますか? これをより効率的にするためのヒントはありますか?それとも全く違うやり方?:)
PS。私はWin7でC++で作業しています。