(cin.get() чисто для того чтобы было время посмотреть на память.)
Кроме этого в программе есть два класса, humanBody наследует body, но это вообще не важно.
Важно то, что до создания поинтеров программа занимает 900 кб оперативной памяти, а после их создания и тут же удаления остаётся 3200 кб.
Можете подсказать где я допустил ошибку? Хотелось бы чтобы память возвращалась к 900 кб.
В стандарте такой функции нет, это зависит от ОС. По умолчанию ранее выделенная память остается у программы. В *NIX можно вызвать malloc_trim, но это не требуется - неиспользуемая память будет просто помечена как таковая, пока туда что-то не попытаются записать. Никаких затрат система реально не несет, а при необходимости уменьшит "занимаемую" память.