Почему компилятор не выдает ошибку аллоцирования памяти?

Почему компилятор(MinGW gcc 6.3) не выдает ошибку у кода ниже? Ведь по хорошему, что бы скомпилировать программу он должен знать сколько памяти она занимает, либо память должна динамически выделяться. Но в данном случае, ни одного, ни другого не происходит. Я просмотрел файл с расширением .s, но там тоже нет неявного вызова malloc. В общем, видимо я чего-то не понимаю.

#include <stdio.h>

int main()
{
    int quantity_of_elements;
    printf("Enter the number of array elements: ");
    scanf("%d", &quantity_of_elements);
    int array[quantity_of_elements];

    for(int i = 0; i < quantity_of_elements; i++) {
        array[i] = 0;
    }

    printf("%d", sizeof(array));

    return 0;
} 

Ответы (0 шт):