念の為に言っておくが、メモリも断片化する。

たとえば1KBのメモリを100個確保して、
偶数個目のメモリを開放すると見事に
1KBごとに使用している・していないという形に断片化する。

OSからメモリを確保する時に、ある程度のブロック単位で
確保するのは、この断片化をなるべく起こらないようにするため。

メモリを確保する時に使用していない領域があるのが嫌だと思うかもしれないが
それはパフォーマンスを上げるために必要なことで、それはC言語のmallocでも
やっていることなんだよ。

メモリプールとか断片化という単語でググればわかるよ。