I hardly call a lack of memory leaks and corrupted memory "a small class of bugs". While I develop .Net apps these days, some of my co-workers spend huge amounts of time tracking down obscure memory corruption bugs in their C++ code. And from my days of
developing C++ apps in the past, this is also what I remember wasting endless time on.
And lets not foget how FF struggles with plugins causing all sorts of memory leaks and instability.
A "small class of bugs"? Hardly.
It protects against buffer overrun type attacks (mostly), but it's certainly possible to leak memory in a .NET app (even though a memory leak isn't necessarily a security issue) even if it more difficult than with unmanaged code. And there are plenty of
other attack vectors which .NET by itself can't protect you from.