![]() Chapter Contents |
![]() Previous |
![]() Next |
| sbrk |
| Portability: | UNIX compatible |
| SYNOPSIS | |
| DESCRIPTION | |
| RETURN VALUE | |
| CAUTION | |
| DIAGNOSTICS | |
| PORTABILITY | |
| IMPLEMENTATION | |
| EXAMPLE | |
| RELATED FUNCTIONS | |
| SEE ALSO |
| SYNOPSIS |
#include <lclib.h> char *sbrk(size_t bytes);
| DESCRIPTION |
sbrk
allocates a block of memory of the size specified by
bytes
. The block is suballocated from an area allocated at program
initialization. The size of this area is determined by the initial value of
the external variable
_mneed
; if this variable
is not set, a default area of 100K is allocated the first time
sbrk
is called.
| RETURN VALUE |
sbrk
returns the address of the first character of the block of memory. The block
is suitably aligned for storage of any type of data.
| CAUTION |
The contents of a memory block on allocation are random.
sbrk
is an inflexible
mechanism for memory allocation. It has no provision for increasing the size
of the
sbrk
-managed area (even if free
memory is available for this purpose). Using
malloc
, which does not have this limitation, is recommended for memory
allocation wherever possible.
Memory allocated with
sbrk
cannot be returned to the operating system (except implicitly at program
termination).
| DIAGNOSTICS |
If adequate memory is not available when
sbrk
is called or if 0 bytes of memory are requested,
sbrk
returns
(char
*)-1
.
| PORTABILITY |
sbrk
is compatible with some versions of traditional UNIX C compilers. It is not
well suited to the 370 environment; therefore, use
malloc
in its place whenever possible.
| IMPLEMENTATION |
Under an XA or ESA operating system, memory
allocated by
sbrk
resides above the 16-megabyte
line for programs that run in 31-bit addressing mode.
| EXAMPLE |
#include <lclib.h>
#include <stdio.h>
int _mneed = 1024; /* Define default size of sbrk area. */
main()
{
int n;
char *stg;
for(n = 1; ; ++n){
stg = sbrk(80);
if (stg == (char *) -1) break;
}
printf("%d 80-byte blocks could be allocated by sbrk.\n", n);
puts("To change the amount available to sbrk, pass "
"the runtime option =/,");
puts("replacing with the size of the sbrk area.");
}
| RELATED FUNCTIONS |
| SEE ALSO |
![]() Chapter Contents |
![]() Previous |
![]() Next |
![]() Top of Page |
Copyright © 2001 by SAS Institute Inc., Cary, NC, USA. All rights reserved.