В C существуют три механизма выделения памяти:
1. Статическое выделение памяти: требования к памяти вычисляются во время компиляции, а память выделяется исполняемым файлом при запуске.
2. Автоматическое выделение памяти: память для области видимости выделяется из стека вызовов при входе в кадр и освобождается при завершении кадра.
3. Динамическое выделение памяти: память запрашивается и выделяется динамически во время выполнения через вызов API выделения памяти.