CKeyWordSetMgrを中心に一通り見て,コメント追加したりしました.
共有フォルダの kwd_modify_200501029.zip です.
CanAddKeyWord()が確保済みエリアに空きがあっても共通空き領域を使い切っているとメモリ不足と判定するようでしたので,確保済みエリアの空きをまず確認するように修正しました.
KeyWordAlloc()の末尾に領域だけ確保するという動作がちょっと固定的すぎてわかりにくいと感じたのと,1回しか使わないのにKeyWordReAlloc()と分けるのも保守しにくくなるかと思いましたので,サイズ0のセット領域を設定してからReAllocし,失敗した場合はカウンタを戻すようにしてみました.
領域拡張等の操作でm_nStartIdx[]の未使用領域にも演算を行っていますが,セット数+1まで設定すれば十分ではないかと...
---
ご認識がありましたら指摘して頂ければと思います.
>(セットで確保しているキーワード数 + 未使用域)
>の表示に変更しました。
見てみましたが,ちょっとわかりにくいように思います.
(セットで確保しているキーワード領域の残数 + 未使用域)
で残りを表示した方がわかりやすいのではないかと思いましたがどうでしょうか?
>あと、CShareData::Initの「強調キーワードのテストデータ」をAddKeyWordしていたものを、専用関数に変更しました。
>体感的には起動が0.1秒くらい早くなる気がします。
関係ないですが,CShareData::Init()はキーワード登録がかなりの行数を消費しているので
その部分を別関数に分離しようと考えています.