Всегда важно называть _freea после каждого вызова _malloca.
_malloca похоже на _alloca, но добавляет некоторые дополнительные проверки безопасности и усовершенствования для вашей защиты. В результате, возможно, что _malloca будет выделять кучу вместо стека. Если это произойдет, и вы не вызываете _freea, вы получите утечку памяти.
В режиме отладки _malloca ALWAYS выделяет кучу, поэтому ее также нужно освободить.
Искать _ALLOCA_S_THRESHOLD для получения информации о том, как работают пороги, и почему _malloca существует вместо _alloca, и это должно иметь смысл.
Edit:
Там были комментарии предполагая, что человек просто выделить в куче, и использовать смарт-указатели и т.д.
Есть преимущества в стек распределения, который _malloca предоставит вам , поэтому есть причины для этого. _alloca будет работать одинаково, но, скорее всего, вызовет переполнение стека или другую проблему, и, к сожалению, не дает хороших исключений, а скорее просто срывает ваш процесс. _malloca намного безопаснее в этом отношении и защищает вас, но стоимость в том, что вам все равно нужно освободить свою память с помощью _freea, так как это возможно (но маловероятно в режиме выпуска), который _malloca будет выбирать для размещения в куче вместо стека.
Если ваша цель состоит в том, чтобы избежать свободной памяти, я бы рекомендовал использовать интеллектуальный указатель, который будет обрабатывать освобождение памяти для вас, поскольку член выходит за рамки. Это назначит память в куче, но будет безопасным и не позволит вам освободить память. Это будет работать только на C++, но если вы используете plain ol 'C, этот подход не будет работать.
Если вы пытаетесь выделить в стеке по другим причинам (как правило, производительность, так как распределение стека очень и очень быстро), я бы рекомендовал использовать _malloca и жить с тем фактом, что вам нужно будет называть _freea на вашем значения.
Просто любопытно, но почему downvotes на Mitch и мои сообщения? Я хотел бы знать, почему кто-то не согласен с этим комментарием ... особенно если я что-то упускаю. –