Declarando uma matriz com uma variável de tamanho não constante [duplicado]

Esta pergunta já tem uma resposta aqui:

Em qual compilador devo confiar? 4 respostas

Estou estudando para o meu teste em C e estou lendo um resumo em C que baixei de algum site. Está escrito que não é permitido escreverarr[i] Ondei é uma variável A única maneira de fazer isso é com malloc.
No entanto, escrevi o seguinte código e ele compila sem avisos e sem erros no valgrind:

int index = 5;
int a4[index];

a4[0] = 1;
a4[1] = 2;

int index2;
scanf("%d",&index2);
int a5[index2];
a5[0] = 1;
a5[1] = 2;

Então, qual é a verdade por trás das declarações de array? obrigado!

questionAnswers(1)

yourAnswerToTheQuestion