Существует три основных способа сделать это.
Первый - не создает утечки памяти в первую очередь. Оборонительные методы программирования здесь неоценимы. См. Это excellent presentation для краткого изложения этих проблем или соответствующей главы в Secure C Coding. Я больше знаком с C, чем с C++, но я понимаю, что C++ smart pointers полезны здесь.
Второй подход статический анализ, который пытается обнаружить ошибки в исходном коде. Оригинальным инструментом в этой категории является lint, который теперь печально устарел. Насколько мне известно, лучшие инструменты являются коммерческими, такими как coverty. Однако, некоторые free tools do exist.
Третий подход заключается в обнаружении утечек памяти во время выполнения, например INSURE ++. Valgrind отлично здесь и очень рекомендуется. Это может помочь поймать ошибки, которые вы уже ввели. Это особенно полезно, если у вас есть набор тестов, который имеет хороший охват кода.
Вы используете C или C++? Доступные решения для разных языков совершенно разные. –
Я использую C. Можете ли вы предоставить разрешение для C и C++ – Ankur
@Ankur: Ну, ответ, который имеет смысл для C, не имеет смысла для C++ и наоборот. Управление памятью - это один из битов, которые изменяются на C++. –