Part of that safety is users working around known bugs, leading to inefficient solutions to whatever the code is supposed to do.
People tend to forget that they don't have to live with those problems, but they still have a cost
People tend to forget that they don't have to live with those problems, but they still have a cost
1) The most cost-effective way to eliminate the majority of memory bugs is to just start writing all new code in a memory-safe language. If you were going to write new code anyway, you may as well do it safely.
2) Going back and re-writing existing code that doesn't need to be changed may solve latent memory bugs, but it will likely introduce other regressions that could be worse for security or for user experience. If code doesn't need to change, it's often better to leave it as is.
Not that a rewrite is never called for, but it's not necessarily the best course of action by any metric (even when neglecting the cost).