Visual C ++ имеет довольно хорошие встроенные инструменты отладки памяти C.
См. #define _CRTDBG_MAP_ALLOC
или прочитайте: Кучи отладки CRT и Включение обнаружения утечки памяти .
Он может обнаружить:
- Утечки памяти
- Двойное удаление
- Запись только за пределами выделенной памяти
Если у вас есть воспроизводимый случай, когда распределение проблем всегда происходит в одно и то же время, вы можете использовать команду set it для взлома отладчика в этом распределении.
Существуют также коммерческие инструменты, такие как BoundsChecker, HeapAgent и Purify, и бесплатные инструменты, такие как Fortify, и, конечно, вы можете свернуть свои собственные, но вы можете проделать долгий путь со встроенным VisualStudio.