私のコードでは、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()
andのようなさらにいくつかの関数のアドレスを印刷しようとさえしましたscanf()
が、それらはすべて、プログラムのコードセグメントではなく、プログラムのコードセグメントの一部であることが示されましたlibc-2.12.1.so
この理由は何ですか。前もって感謝します。