C で文字列を処理するには、単純なクラスベースの言語が必要ですが、代わりに便利な文字列ライブラリを作成しようとしています。Rstring
私の考えは、内部const char* s
andを持つ (「堅牢int length
な文字列」)rstring_concat
と呼ばれる構造体を使用して、不変の文字列を使用することです。rstring_substring
Rstring
malloc
ライブラリの最初のドラフトを書き上げて、char *
. ただし、新しく割り当てられたポインターを返すことは、デストラクタのない PITA のようなものであることに気付きました。連結や部分文字列などの操作が行われるたびに、新しく割り当てられたメモリがいくつかあり、以前に持っていた文字列がぶらぶらしていて、おそらく役に立たないので、それらをfree
'd にする必要があり、C にはデストラクタがありません、そのため、ユーザーはすべてを手動で移動する必要がありfree
ます。
したがって、私の質問は、解放するための手動呼び出しを大量に行う必要を回避する賢い方法はありますか? おそらく、たとえば、小さな文字列のように振る舞う文字列を持つために、内部インデックスstart
とインデックスを持つことはできますが、実際にはもっと多くの文字列が含まれていますか? end
これを行うための一般的に受け入れられている方法があるかどうか、または単に C の退屈なメモリ管理に行き詰まっているだけなのかどうかはわかりません。
おそらく最良の方法ですが、C で便利な文字列操作を行うために広く使用されているライブラリはありますか?