Есть три основных способа сделать это.
Во-первых, не создает утечек памяти . Методы защитного программирования здесь неоценимы. См. превосходную презентацию для краткого изложения этих проблем или соответствующую главу в Secure C Coding . Я больше знаком с С, чем с С ++, но понимаю, что умные указатели С 1010 * здесь полезны.
Второй подход статический анализ , который пытается обнаружить ошибки в вашем исходном коде. Оригинальный инструмент в этой категории - lint , который сейчас, к сожалению, устарел. Насколько я знаю, лучшими инструментами являются коммерческие, такие как coverty . Однако некоторые бесплатные инструменты существуют .
Третий подход заключается в обнаружении утечек памяти во время выполнения, как INSURE ++ . Valgrind отлично подходит здесь и настоятельно рекомендуется. Это может помочь поймать ошибки, которые вы уже представили. Это особенно полезно, если у вас есть набор тестов с хорошим охватом кода.