суббота, 20 марта 2010 г.

Выделение памяти в stack

Обычно при динамическом выделении памяти используется 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;
}

Комментариев нет: