I was about the 10th user world wide of a tool called Purify in 1991. It instruments and detects memory issues including write beyond the end of an array, using uninitialized data (reads), freeing a pointer to memory that has already been freed. My co-workers were dumping core almost daily in their X Windows C code. Applying Purify stomped those bugs out fast. Later, I used similar products from other vendors for Windows platforms. Same good results. For the typical Linux user, the "valgrind" tool does a very good job of dynamic memory defect detection. I use the open source "cppcheck" for initial static analysis and write code with SonarLint extensions for Visual Studio Code. It is hard to beat C/C++ for performance. A little care and you can have the performance without the bugs.
I have had some interest in "rust", "D" and clojure as "safe" languages. The problem is that none of the customer code is written in those languages. The real world stuff is C, C++, Java, FORTRAN and Ada. The Ada stuff comes from an attempt by DoD to push for Ada development. The FORTRAN stuff remains due to stable implementations of compute intensive algorithms that just "work" and can leverage a vectorized processor like a Cray.