>>106035886It's very much a human error - sometimes you forget to free() or close() or you have a branch where you try to access a previously freed pointer etc etc. C simply doesn't hold your hand which leads into a lot of negligence-based errors
Plus the types aren't actually standardized between platforms so while on most modern systems int has 32 bits, there are some where it's smaller, char isn't guaranteed to be 8 bits etc, which can lead into some memory errors (alleviated by stdint.h but that's hardly a perfect solution)
Plus the standard library contains a while lot of unsafe functions, like gets(), so you have to know which ones are ok to use and which ones are not.
Plus a whole lot of things that are allowed by the compiler without as much as a warning, but are actually undefined behavior
The language could use a lot of cleanup, but that won't happen at this point because it would mean likely breaking compatibility