Я не уверен, что это проще, чем переписывать функцию самостоятельно, но вы могли бы написать свой собственный небольшой распределитель памяти, специфичный для вашей задачи, который бы выглядел несколько следующим образом:
(он должен заменить вызовы выделения памяти по умолчанию, и это также делается для функций в вашей библиотеке).
1) У вас должна быть возможность войти в режим восстановления утечки , который, например, удаляет все, что выделено в этом режиме.
2) Прежде чем ваша функция что-то обработает, введите этот режим устранения утечек и выйдите из него после завершения функции.
В принципе, если зависимости в вашем коде не слишком тесны, это поможет.
Другим способом было бы создать другое приложение и связать его с основным. Когда выходит второй, память будет автоматически уничтожена. Возможно, вы захотите посмотреть, как googletest
framework выполняет свой дочерний тест и как там строятся каналы.