Я согласен с bmargulies - Valgrind - абсолютно лучший инструмент для автоматического обнаружения неправильного использования памяти. Почти все дистрибутивы Linux должны иметь его, так что просто emerge valgrind
или apt-get install valgrind
или что-то еще, что использует ваш дистрибутив.
Тем не менее, Valgrind вряд ли является наименее загадочной вещью из существующих, и обычно она только помогает вам определить, где программа в конечном итоге получила неправильный доступ к памяти - если вы сохранили неверный индекс массива в переменной и затем получили к нему доступ позже, вам все равно придется это понять. Однако, особенно в сочетании с мощным отладчиком, таким как GDB (команда backtrace
или bt
- ваш друг), Valgrind является невероятно полезным инструментом.
Просто не забудьте скомпилировать с флагом -g
(если вы используете GCC, по крайней мере), или Valgrind и GDB не смогут сказать вам, где в источнике произошло злоупотребление памятью.