C (like most other compiled languages) does not require bounds to be checked. This means that C can't even detect a trivial off-by-one error - it will produce a program, which will continue working for hours until it reaches the error - THEN go stack overflow and you lost all unsaved data.