It's the C programming language which is at fault here. Arrays in C aren't really arrays, they're just pointers. Most modern languages (such as D, which all C++ programmers should investigate) have bounds checking on actual arrays.
D has bounds checking on primitives? That doesn't seem like a great idea, must have a significant performance impact. Sure it prevents buffer under/overruns, but if you want to do that use a container class which does bounds checking.
Nothing like the open source computing movement has ever caught fire in biology or pharmaceuticals
Informatics for Biology... Bioinformatics. Is RUN by open source software. BLAST http://en.wikipedia.org/wiki/BLAST
There are two ways to write error-free programs; only the third one works.