I know the difference between static (determined by compiler) and dynamic (determined at runtime) allocation. What I don't understand is what happens in the case where we have a situation such as:
int n = 5;
int arr[n];
arr isn't allocated with malloc, so it can't be placed on the heap. However, it also can't be allocated statically, as the program has to run to be able to determine the size of a. So how does arr get allocated?