Динамическое размещение массива в стеке в C

Я только вчера провел эксперимент, и нашел что-то запутанное

#include <stdio.h>

int main()
{
    int j;
    scanf("%d",&j);
    const int i = j;
    int arr[i];
    return 0;
}

Числоj читается с клавиатуры и используется для выделения массиваarr в стеке.

Компилятор даже не знает размер массива во время компиляции (инициализирует j к 0?), Но нет ошибки компиляции. Как это возможно?

Ответы на вопрос(3)

Ваш ответ на вопрос