The "if used correctly" bit is the problem. People aren't perfect. Even the really good, really experienced, really careful ones make mistakes. It's easier to avoid certain kinds of mistakes in other languages than in C. You can, of course, write perfect, secure code in C. You can do the same programming machine code using toggle switches too. It's just harder and takes more effort, which makes it more difficult to avoid mistakes.