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.
