stack 、 heap 、および共有ライブラリのアドレス範囲がどこから始まるかを見ていました。共有ライブラリ (私が作成したもの) と a.out の 2 つの値が表示されます。ld と libc の 3 つの値。残りは匿名で、領域の開始アドレスをスタックします。
kg>pmap 24545
24545: ./a.out
003d3000 4K r-x-- [ anon ]
004d9000 4K r-x-- /home/trng3/sh/POC/libfile_sys.so
004da000 4K rwx-- /home/trng3/sh/POC/libfile_sys.so
08048000 4K r-x-- /home/trng3/sh/POC/a.out
08049000 4K rwx-- /home/trng3/sh/POC/a.out
46f46000 100K r-x-- /lib/ld-2.5.so
46f5f000 4K r-x-- /lib/ld-2.5.so
46f60000 4K rwx-- /lib/ld-2.5.so
46f68000 1244K r-x-- /lib/libc-2.5.so
4709f000 8K r-x-- /lib/libc-2.5.so
470a1000 4K rwx-- /lib/libc-2.5.so
470a2000 12K rwx-- [ anon ]
b7f8a000 4K rw--- [ anon ]
b7fa1000 4K rw-s- /dev/zero (deleted)
b7fa2000 8K rw--- [ anon ]
bfc0f000 84K rw--- [ stack ]
1 つではなく 2 つのコピーがあるのはなぜですか。1 つはディスクからのもので、もう 1 つは現在メモリ内にあります。同じデータの 2 つのコピーをメモリに保持する目的は何ですか?