Один из самых старых методов - переопределить операторы new и delete (при условии, что все выделения кучи выполняются через new). Выходные данные, размещенные внутри ваших перегруженных операторов new и delete, позволяют вам удостовериться, что вы очистились перед выходом. Но это может быть немного сложно; у вас будет соблазн перегрузить новое и удалить в глобальной области видимости. Но это может привести к другим необъяснимым ошибкам (конечно, вы будете использовать только перегруженные операторы в режиме отладки, хорошо). Оставьте это в своей области видимости.
Еще один разумный способ - использовать auto_ptr. Указатель, который вы хотите убедиться, что вы удалили, хранится в объекте шаблона auto_ptr в стеке. Поэтому, когда этот объект выходит из области видимости, он берет указатель, сохраненный вместе с ним.
Если вы все еще беспокоитесь об утечках, попробуйте учиться с помощью windbg. Это удивительный инструмент, который поможет вам выявить утечки памяти. Я нашел действительно эффективным обнаружение утечек, вызванных ручками.