brk, sbrk - change data segment space allocation
int brk(const void *endds);
void *sbrk(int incr);
brk() and sbrk() are used to change dynamically the amount of space
allocated for the calling process's data segment; see exec(2). The
change is made by resetting the process's break value and allocating
the appropriate amount of space. The break value is the address of
the first location beyond the end of the data segment. The amount of
allocated space increases as the break value increases. The newly
allocated space is set to zero.
brk() sets the break value to endds and changes the allocated space
sbrk() adds incr bytes to the break value and changes the allocated
space accordingly. incr can be negative, in which case the amount of
allocated space is decreased.
brk() and sbrk() fail without making any change in the allocated space
if one or more of the following are true:
[ENOMEM] Such a change would result in more space being
allocated than is allowed by a system-imposed maximum
[ENOMEM] Such a change would cause a conflict between addresses
in the data segment and any attached shared memory
segment (see shmop(2)).
[ENOMEM] Such a change would be impossible as there is
insufficient swap space available.
The pointer returned by sbrk() is not necessarily word-aligned.
Loading or storing words through this pointer could cause word
Be very careful when using either brk or sbrk in conjunction with
calls to the malloc(3C) library routines. There is only one program
data segment from which all three of these routines allocate and
deallocate program data memory.
Hewlett-Packard Company - 1 - HP-UX Release 11i: November 2000
Upon successful completion, brk() returns a value of 0. Otherwise, a
value of -1 is returned and errno is set to indicate the error.
Upon successful completion, sbrk() returns the old break value.
Otherwise, SBRK_FAILED is returned and errno is set to indicate the
error. The symbol SBRK_FAILED is defined in the header <unistd.h>. No
successful return from sbrk() will return the value SBRK_FAILED.
brk() and sbrk() were developed by AT&T and HP.
exec(2), shmop(2), ulimit(2), end(3C), malloc(3C).
Hewlett-Packard Company - 2 - HP-UX Release 11i: November 2000