Я пересматривал C и наткнулся на функции alloca/free, которые описываются как выделение памяти в стеке, подобном пространству. Это то же самое, что malloc/free ? или это что-то другое? Спасибо.
alloca функция в C
Ответы (3)
Я думаю, вы имеете в виду alloca
, который используется для выделения памяти в стеке. И да, это отличается от malloc
и free
, которые выделяются в куче.
Не пытайтесь освободить память, выделенную с помощью alloca
, потому что она автоматически освобождается, когда функция, вызвавшая alloca
, возвращается к вызывающей стороне.
Использование массивов переменной длины alloca
и/или C99 может быть рискованным делом, потому что вы можете легко переполнить стек, если неосторожно используете эти инструменты.
alloca
или VLA.
- person R.. GitHub STOP HELPING ICE; 05.02.2012
Функции malloc
, calloc
и realloc
выделяют место в куче.
free
функция "освобождает" пространство, ранее выделенное этими функциями.
Добавление дополнительной информации к старому ответу.
malloc()
можно использовать по нескольким причинам, некоторые из них
- Динамическое выделение памяти
- Область действия (когда нужна память, которая остается между вызовами функций)
Но одна дополнительная работа, которая добавляется с malloc()
, заключается в том, что мы должны явно free()
выделить выделенную память.
Таким образом, чтобы использовать только функцию Динамическое выделение памяти и избежать накладных расходов на free()
, можно использовать alloca()
в своей программе. Это стало возможным, потому что память выделяется в стеке (как упоминалось в других ответах), когда используется alloca()
.
alloc
— это другая функция: cboard.cprogramming.com/c-programming/ - person Alex Reynolds   schedule 05.02.2012