Certo. Pode haver diferenças entre compiladores, no caso usei o GCC do Linux, que é o mesmo do Dev C++, é o compilador GNU, vem no pacote TDM.
Não sei qual compilador a versão online usa, mas pode ter diferentes reações com acesso fora do escopo. Segundo a documentação da linguagem C do ISO, não tem uma reação definida para isso:
"Possible undefined behavior ranges from ignoring the situation completely with unpredictable results, to behaving during translation or program execution in a documented manner characteristic of the environment (with or without the issuance of a diagnostic message), to terminating a translation or execution (with the issuance of a diagnostic message)."
"behavior, upon use of a nonportable or erroneous program construct or of erroneous data, for which this International Standard imposes no requirements"
Quando você tenta acessar um endereço além do escopo, no melhor cenário vamos ter essas reações malucas, é melhor você não tentar achar um padrão nisso, porque seu programa não foi feito para fazer isso.
Quando acessamos um endereço não reservado previamente, podemos estar acessando o endereço de outro programa. É quase como usar uma varíavel sem zerar ela antes, sabe-se lá o que haverá lá.
Por fim, acho que agora para seu programa ficar completo é só adicionar o mecanismo de enforcar ou de acertar.
A melhor coisa que se faz como desenvolvedor e engenheiro de software é prever que certas coisas podem sair do previsto (como acessar memória além do escopo do array) e proteger o usuário disso.
Desenvolvi para embarcados profissionalmente por alguns anos, isso em um embarcado pode causar problemas sérios, é extremamente necessário criar recursos que previnam o programa de ir para uma região desconhecida da memória.
Espero ter ajudado! =¬)