Once you start writing past the end of an array, your code enters the realm of "undefined behavior." When you hit 57 you happen hit a point in memory that your system knows you cannot legally write to.
It will be a different number on other OSes, with other compilers, and other architectures.
If you had a more complicated program, you could cause a crash at 12. Or 16. Or you would cause no crash at all, but suddenly your program starts misbehaving in other unpredictable ways. Or you may never see it until you recompile with a new compiler or apply an OS patch.