/* * Sample program for brk system call - No.45 * * brk(2), sbrk(2) - change data segment size * * Synopsis * #include * * int brk(void *end_data_segment); * void *sbrk(ptrdiff_t increment); * * Description * brk sets the end of the data segment to the value specified * by end_data_segment, when the value is reasonable, the * system does have enough memory and the process does not * exceed its max data size (see setrlimit(2)). * * sbrk increments the program's data space by increment * bytes. sbrk isn't a system call, it is just a C library * wrapper. Calling sbrk with an increment of 0 can be used * to find the current location of the program break. * * Return value * On success, brk returns zero, and sbrk returns a pointer * to the start of the new area. On error, -1 is returned, * and errno is set to ENOMEM. */ #include main() { void *ptr; ptr = (void *)sbrk(0); printf("%0X\n", ptr); brk(ptr + 4); printf("%0X\n", sbrk(0)); }