You forgot that beauty - "undefined behavior"!
Memory-safety can guarantee only so much safety! C++ can still blow up in your face, even with all the alleged memory-safety built into C++, thanks to all the UB traps in C and C++.
Rust is the closest language that has no such "gotchas".
After almost 12~15 years of programming in C and C++, I would give myself a solid "still don't know enough" out of 10.