Мне любопытно узнать, почему вы хотите это сделать, но это просто любопытство.
Определение размера для каждого используемого класса должно быть простым, если только они не были шаблонизированы, и в этом случае вам также придется проверять каждое создание.
Аналогично, определение для вызова sizeof для функции очень просто: это sizeof для каждого переданного параметра плюс некоторые служебные расходы.
Чтобы определить полное использование памяти всей программой, если оно не определено статически, невозможно выполнить без профилировщика времени выполнения.
Написание сценария оболочки, который бы собирал все имена классов в файл, было бы довольно просто. Этот файл может быть сконструирован как файл .cpp, представляющий собой серию вызовов sizeof для каждого класса. Если этот файл также # включает каждый заголовочный файл, он может быть скомпилирован и запущен для получения вывода из памяти только классов.
Аналогично, отбраковка всех определений функций для определения, когда они не используют аргументы ссылки или указателя (т.е. копирование всего экземпляра класса в стек), должна быть довольно простой.
Все это говорит о том, что я не знаю ни одного существующего инструмента, но написать его не должно быть сложно.