フラグメンテーションとrealloc関数

C言語ポインタ完全制覇 2-6-5、2-6-6


このあたりは凄く有用ですね。

mallocを使うことで小さな空きブロックが溜まっていくのでメモリ効率が悪くなる。

reallocだとその場所から拡張するので、うまく空きブロックに当たれば効率はいいが、無かった場合にコピーが発生して効率が悪くなる可能性もあると。

ちまちまと確保、解放を繰り返すと、フラグメンテーション(断片化)のもとになります。そこで、たとえば100要素とかを単位として「足りなくなったらガバッと伸ばす」という手法を使うことがあります。

色々苦労が耐えないわけですね。

このあたりをプログラマが意識しなくてもちゃんと効率が悪くならないようにコンピュータがよきにはからってくれる時代はくるんでしょうか(笑)