Если память чем-нибудь заполнить, то программа просто начнет жрать еще больше, на освобождение это не повлияет. Как заставить библиотеку - ну это в документации к библиотеке. Системные интерфейсы для этого имеются (madvise(2) например), но их в обход библиотеки использовать не следует, она потом удивится несоответствию данных, будут непредсказуемые глюки.
Ну и в конце концов, случай программы всё же весьма синтетический - реальные приложения вот таким макаром память не едят, они освобождают, потом снова запрашивают, так что нет смысла ее системе возвращать. На FreeBSD 7, например, эта программа вернет память перед выходом, если ее модифицировать - поставить после финального цикла задержку в несколько десятков секунд и еще какие-нибудь действия. Не ходите против оптимизаций системщиков, пока вам это действительно на практике не понадобилось.