Я действительно не понимаю, почему я не могу иметь в стеке массив переменного размера, что-то вроде
foo(int n) { int a[n]; }
Насколько я понимаю, стек (-сегмент) части сегмента данных и, следовательно, не имеет «постоянного размера».