在我的代码中,我尝试打印 printf() 函数的地址。
22834: ./a.out
00250000 1372K r-x-- /lib/libc-2.12.1.so
003a7000 8K r---- /lib/libc-2.12.1.so
003a9000 4K rw--- /lib/libc-2.12.1.so
003aa000 12K rw--- [ anon ]
00a14000 112K r-x-- /lib/ld-2.12.1.so
00a30000 4K r---- /lib/ld-2.12.1.so
00a31000 4K rw--- /lib/ld-2.12.1.so
00fb9000 4K r-x-- [ anon ]
08048000 4K r-x-- /home/anirudh/Documents/DUMP/a.out
08049000 4K r---- /home/anirudh/Documents/DUMP/a.out
0804a000 4K rw--- /home/anirudh/Documents/DUMP/a.out
08068000 132K rw--- [ anon ]
b7898000 4K rw--- [ anon ]
b78ac000 8K rw--- [ anon ]
bfc9a000 132K rw--- [ stack ]
total 1808K
Address of the function "printf()" in HEX = 8048408
我期待它的地址成为
00250000 1372K r-x-- /lib/libc-2.12.1.so
而不是如图所示,它的代码在本节中,
08048000 4K r-x-- /home/anirudh/Documents/DUMP/a.out
即我的代码的代码段。
我什至尝试打印更多函数的地址,getpid()
但scanf()
它们都显示为我程序代码段的一部分,而不是libc-2.12.1.so
这是什么原因?提前致谢。