вы просто о разных уровнях абстракции над памятью говорите. На уровне васма память действительно может только увеличиваться, а на уровне вызова free происходит просто работа внутри менеджера памяти (освобождённый регион добавляется во free list), но память системе не отдаётся (тут есть оговорки)