Define the first addresses following the program, initialized data, and all data.
extern _end;
extern _etext;
extern _edata;
The external names _end, _etext, and _edata are defined by the loader for all programs. They are not subroutines but identifiers associated with the following addresses:
Item | Description |
---|---|
_etext | The first address following the program text. |
_edata | The first address following the initialized data region. |
_end | The first address following the data region that is not initialized. The name end (with no underscore) defines the same address as does _end (with underscore). |
The break value of the program is the first location beyond the data. When a program begins running, this location coincides with end. However, many factors can change the break value, including:
Therefore, use the brk or sbrk(0) subroutine, not the end address, to determine the break value of the program.