遵循规范
尽管大多数UNIX系统上早已提供了这些符号,但它们尚未标准化。谨慎使用。
示例
运行时,以下程序将产生如下输出:
$ ./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/。
Linux程序员手册 第3部分
更新日期: 2020-06-09
语法
extern etext; extern edata; extern end;
名称
etext,edata,end-程序段的末尾
说明
这些符号的地址表示各个程序段的结尾:
- etext
- 这是文本段(程序代码)末尾的第一个地址。
- edata
- 这是初始化数据段末尾之后的第一个地址。
- end
- 这是未初始化数据段(也称为BSS段)末尾的第一个地址。
日期:2019-08-20 18:00:09 来源:oir作者:oir