Как вы, наверное, знаете, у VLA есть плюсы и минусы , и они необязательны в C11.
Я полагаю, что основная причина сделать VLA необязательной: «стек может взорваться»:
int arr[n]; /* where n = 1024 * 1024 * 1024 */
а как насчет указателя на VLA?
int m, n;
scanf("%d %d", &m, &n);
int (*ptr)[n] = malloc(sizeof(int [m][n]));
В этом случае нет риска взорвать стек, и IMO они чрезвычайно полезны.
Мой вопрос:
Может ли комитет сохранить указатели на VLA, делая необязательные типы VLA на необязательные?
Или одно подразумевает другое?
(Извините, мой плохой английский)