A memory-safe language would force you to make an active *choice* to crash, which at least gives you a chance to, you know, not do that and instead just bypass the update or fail gracefully.
Yes, it is still possible to write crap code for memory-safe languages, but you generally have to do that much more on purpose.