【发布时间】:2014-04-12 15:50:55
【问题描述】:
首先我读到地址在 .data 和 .text 中保存字符串文字(加上我想的机器代码),之后在其他一些文章中有人说它已经改变并且更长的字符串文字存在于 .text 但 .rodata 而不是(它是true 我的 clang 编译器输出)。但是 .data 内容与我在 C 程序中 printf 的地址不匹配。
假设这个 C 程序:
static int a;
int main()
{
printf("my address = %p\n", &a);
return 0;
}
这个 C 程序的输出:
$ ./a.out
my address = 0x804a01c
然后是.data部分的内容:
$ objdump -s -j .data a.out
a.out: file format elf32-i386
Contents of section .data:
804a00c 00000000 00000000
此内容中没有0x804a01c。地址在哪里?
【问题讨论】: