... there will always be bugs the problem with c and c++ is they make these kinds of error really easy to make.
That's true of C, certainly.
One of the design goals of modern C++ is to make it really hard to make errors of the type being discussed here -- and that is a goal that is very largely met when the language is used in a modern, safe, idiom. Of course, you can write Fortran (or C) in any language, but if modern C++ is used correctly it should be a very safe language.
The trouble is that a lot of C++ programmers use the language as "C with bells on", and fail to reap the advantages.