Обычно при динамическом выделении памяти используется heap. Однако такое выделение возможно и в stack’е. Для этого можно использовать набор функций _malloca и _freea, которые задекларированы в заголовочном файле memory.h
Рассмотрим функцию _malloc:
void *_malloca( size_t size ); – size – размер выделяемой области памяти в байтах. Функция возвращает указатель на выделенную память. Если происходит ошибка, то возвращается нулевой указатель (NULL).
Для освобождения памяти используется функция _freea:
void _freea( void *memblock ); – memblock – указатель на участок памяти, который нам необходимо освободить.
Рассмотрим пример использования данных функций:
#include <malloc.h>
#include <string.h>
int main(int argc, char* argv[])
{
char *p=(char *)_malloca(200);
if(p){
char *str="Hello, world!";
strcpy_s(p,200,str);
printf("%s", p);
_freea(p);
}else
printf("Cannot allocate memory\n");
return 0;
}