Я думаю, что вы ищете функцию alloca()
.Я не уверен, что это стандартный C, но он существует в GNU, и он работал в моей визуальной студии.Вот как вы его используете:
int n = 5;
int* a = (int*) alloca(sizeof(int) * n);
Создает массив элементов в стеке (а не в куче с malloc).Преимущества: меньше накладных расходов, нет необходимости освобождать вручную (когда вы возвращаетесь из вашего метода, стек сбрасывается и память теряется) Недостаток: если вы хотите вернуть указатель из метода, НИКОГДА не используйте alloca, так как вы будете указыватьто, что больше не существует после выхода из функции.Можно также утверждать, что стек обычно меньше кучи, поэтому, если вы хотите больше места, используйте malloc.Подробнее здесь