CodeNet / Языки программирования / C / C++ / Руководства и справочные материалы по C/C++ / Справочники по функциям / Справочник по библиотечным функциям языка Си
sbrk - увеличить сегмент данных
Описание
sbrk пытается расширить сегмент данных на число байтов, указанных в count. При успешном завершении возвращает- ся указатель на добавленную память, в противном случае возвращается -1. Для T,S и M моделей памяти, если не была объявлена переменная _okbigbuf, то вся доступная память, размером до 64 Кб, присоединяется при запуске программы и sbrk будет всегда сбоить (т.е. возвращать -1). Если переменная _okbigbuf объявлена в программе и инициализирована 0, то в 'куче' размещаетсят только требуемая программе память и здесь полезна sbrk. Для C и L моделей памяти, если sbrk() не может расши- рить сегмент данных, она будет пытаться присоединить новый сегмент. sbrk() является общей частью функций calloc(), malloc() и realloc(). Приложениям следует избегать использовать эту функцию.
Использование
void *sbrk(unsigned count);
Возвращаемое значение
Если не хватило памяти для удовлетворения запроса, sbrk возвращает -1 и устанавливает errno. В про- тивном случае возвращается указатель на блок памяти.
Пример
#include <string.h> #include <stdio.h> void *sbrk(int); main() { unsigned int count = 100; char *ptr; ptr = sbrk(count); if (ptr == (char *)-1) { perror("No available space for sbrk\n"); return; } strcpy(ptr, "String of data:"); strcat(ptr, "another string added\n"); fputs(ptr, stdout); }
Рекомендация
Смотрите также calloc, free, malloc, realloc.