brk.2 (2010 09)

b
brk(2) brk(2)
NAME
brk, sbrk - change data segment space allocation
SYNOPSIS
#include <unistd.h>
int brk(const void *endds);
void *sbrk(int incr);
DESCRIPTION
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 allo-
cating 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 accordingly.
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.
ERRORS
brk() and sbrk() fail without making any change in the allocated space if one or more of the follow-
ing are true:
[ENOMEM] Such a change would result in more space being allocated than is allowed by a system-
imposed maximum (see ulimit (2)).
[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.
[EINVAL] Such a change will result in crossing the boundary to uninitialized data in the calling
process’s data segment.
WARNINGS
The pointer returned by
sbrk() is not necessarily word-aligned. Loading or storing words through this
pointer could cause word alignment problems.
Be very careful when using either
brk or sbrk in conjunction with calls to the malloc (3C) library rou-
tines. There is only one program data segment from which all three of these routines allocate and deallo-
cate program data memory.
RETURN VALUE
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.
AUTHOR
brk() and sbrk() were developed by AT&T and HP.
SEE ALSO
exec(2), shmop(2), ulimit(2), end(3C), malloc(3C).
STANDARDS CONFORMANCE
brk(): XPG2
sbrk(): XPG2
HP-UX 11i Version 3: September 2010 1 Hewlett-Packard Company 1

Summary of content (2 pages)