доглядеть за всем в C++ нереально, иногда один символ может вызвать баг ценой в пару часов отладки
компиляторы не обладают возможностью глубокого анализа (на утечки памяти, выход за пределы масива и тд) но есть специальный софт для этого, к примеру PREfast
почитать о нём можно тут
http://blog.gamedeff.com/?p=164
но для VS 2005 Team Suite, для VS 2008 (не знаю какие версии), скорее всего и для 2010 студии, можно добавить параметр /analyze в дополнительные опции компилятора (cl.exe, в настройках проекта это доп. опции C++) и тогда он произведет глубокий анализ кода
к примеру у меня всплыло что выделял масив new[], а удалял с помощью delete
