GLIB 固有の malloc_trim でメモリを開放2026年03月03日 12時02分30秒

GLIB には malloc_trim と言う関数がある。これは GNU 拡張。

malloc がメモリを OS に返すのは割当ての逆順になっている。途中に大きく free されて戻った部分が出来ても、最終部が空いていないと OS に戻せなくなる。そんな時に malloc_trim を呼んで、半強制的に OS に返せるように試みる関数。

一時利用のメモリが連続的に開放されれば良いのだが現実はそんなに甘くは無いようだ。実用的なプログラムを書くと、処理中にシングルトン等が割り当てられたり等が起きて、処理後にメモリを開放しても、シングルトン部分が残ったままになり、一つの未領域に戻らない事が多いらしい。