brk, sbrk - change data segment space allocation


int brk(endds)
char *endds;

char *sbrk(incr)
int incr;


brk and sbrk are used to change dynamically the amount of space allocated for the calling process's data segment. The change is made by resetting the process's break value. The break value is the address of the first location beyond the end of the data segment. The amound of allocated space increases as the break value increases.

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.

brk and sbrk will fail without making any change in the allocated space if such a change would result in more space being allocated than is available [ENOMEM].


Upon successful completion, brk returns a value of 0 and sbrk returns the old break value. Otherwise, a value of -1 is returned and errno is set to indicate the error.