With out getting very technical there is a few things worth noting when referring to overflows.
There is some programing languages that buffer overflows are more difficult then others. An application written in a low level language like ‘c’ which gives the developer very fine control over the system memory is more likely to have a overflow then something written in Perl or Java.
Also buffer overflows are something in an application that is extremely easy to not do, checking the bounds on your variables when the are accepted will make sure what you are getting is going to fit into the buffer. This means moving a developer past the point of this “works” to this is “correct”, not to say that are bad developers but that bar needs to be moved up.