END - Linux手册页
时间:2019-08-20 18:00:09 来源:igfitidea点击:
Linux程序员手册 第3部分
更新日期: 2020-06-09
名称
etext,edata,程序段的末尾
语法
extern etext; extern edata; extern end;
说明
这些符号的地址表示各个程序段的结尾:
- etext
- 这是文本段(程序代码)末尾的第一个地址。
- edata
- 这是初始化数据段末尾之后的第一个地址。
- end
- 这是未初始化数据段(也称为BSS段)末尾的第一个地址。
遵循规范
尽管大多数UNIX系统上早已提供了这些符号,但它们尚未标准化。谨慎使用。
备注
程序必须显式声明这些符号。它们没有在任何头文件中定义。
在某些系统上,这些符号的名称前面带有下划线,即:_etext,_edata和_end。这些符号也为在Linux上编译的程序定义。
在程序执行开始时,程序中断将在&end附近(也许在下一页的开始处)。但是,中断将随着通过brk(2)或malloc(3)分配内存而改变。使用参数为零的sbrk(2)查找程序中断的当前值。
示例
运行时,以下程序将产生如下输出:
$ ./a.out First address past: program text (etext) 0x8048568 initialized data (edata) 0x804a01c uninitialized data (end) 0x804a024
Program source
#include <stdio.h> #include <stdlib.h> extern char etext, edata, end; /* The symbols must have some type, or "gcc -Wall" complains */ int main(int argc, char *argv[]) { printf("First address past:\n"); printf(" program text (etext) %10p\n", &etext); printf(" initialized data (edata) %10p\n", &edata); printf(" uninitialized data (end) %10p\n", &end); exit(EXIT_SUCCESS); }
出版信息
这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/。