便宜上、プレーン テキストの例を使用します。たとえばI have a cat
、malloc
statement のchar
場合、最後の\0
.
lovely
ただし、前に挿入したい場合はどうすればよいcat
ですか? 十分な大きさの新しい配列を作成し、すべてをコピーする必要があるようです。
さらに悪いことに、どのくらいのものが追加されるかはコンピューターでは予測できないため、新しい文字が追加されるたびにこの re-malloc を実行してコピーする必要があるようです。つまり、文字ごとにすべてを実行する必要がありますl
o
v
e
l
y
。これは賢明な解決策ではありません。(コンピューターは「素敵」という言葉を事前に知りませんよね?)
「より良い」解決策は、最初に十分な大きさの配列を作成して、新しい文字が挿入されるたびに、プログラムがそれ以降のすべてをコピーして移動するだけであるように思われます。ただし、特にドキュメントが長く、最初から追加しているときは、これでもまだ非効率的です。
同じことが「削除」にも当てはまります。文字が削除されるたびに、それ以降のすべてをコピーして配列サイズを縮小する必要があるようです。
コンテンツを格納するために配列の代わりにノードを使用することは、コンテンツの途中で何かをしたいときはいつでも最初からずっと道をたどらなければならないので、同様にひどい解決策のようです.
この場合、メモリを管理するための正しい、または効率的な方法は何ですか? C などの低レベルでのプログラミングに対する回答が必要です。C では、すべてを処理する「魔法の」関数やライブラリを使用せずに直接メモリの割り当てと割り当て解除を行う必要があります。