Stepping past the bounds of an array is undefined behavior in C. This means that it is illegal, but the language is not required to do anything specifically if/when it happens.
In other words, if you get a segfault, that's awesome! It'll be easier to debug. But unfortunately, you won't necessarily get one. In your case, you're merely overwriting adjacent memory. C has no runtime information about array bounds, and as such cannot enforce them.
On the Linux system, the stack is allocated as a large, contiguous block of read-write (and sometimes executable) memory. You won't get a segmentation fault unless you write so much data that you pass the bounds of the stack itself.