Я написал простую C-программу для потоков, чья карта процессов выглядит следующим образом:
anirudh@anirudh-Aspire-5920:~/Documents/DUMP$ pmap 3232
3232: ./a.out
00148000 1372K r-x-- /lib/libc-2.12.1.so
0029f000 8K r---- /lib/libc-2.12.1.so
002a1000 4K rw--- /lib/libc-2.12.1.so
002a2000 12K rw--- [ anon ]
003c8000 4K r-x-- [ anon ]
00640000 112K r-x-- /lib/ld-2.12.1.so
0065c000 4K r---- /lib/ld-2.12.1.so
0065d000 4K rw--- /lib/ld-2.12.1.so
0074c000 84K r-x-- /lib/libpthread-2.12.1.so
00761000 4K ----- /lib/libpthread-2.12.1.so
00762000 4K r---- /lib/libpthread-2.12.1.so
00763000 4K rw--- /lib/libpthread-2.12.1.so
00764000 8K rw--- [ 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
08155000 132K rw--- [ anon ]
b6856000 4K ----- [ anon ]
b6857000 8192K rw--- [ anon ]
b7057000 4K ----- [ anon ]
b7058000 8200K rw--- [ anon ]
b786b000 12K rw--- [ anon ]
bfc8e000 132K rw--- [ stack ]
total 18312K
anirudh@anirudh-Aspire-5920:
Теперь из приведенного выше отображения я думаю, что это должен быть сегмент кода, потому что сегмент кода нельзя изменить, если толькоархитектура поддерживает самоизменяющийся код
08048000 4K r-x-- /home/anirudh/Documents/DUMP/a.out
Это сегмент данных.Я объявил глобальную переменную, проверил ее адрес и соврал в диапазон адресов следующего сегмента.
0804a000 4K rw--- /home/anirudh/Documents/DUMP/a.out
Теперь я не понимаю, для чего предназначен следующий сегмент ...это код или данные.
08049000 4K r---- /home/anirudh/Documents/DUMP/a.out
Спасибо за чтение моего вопроса.Пожалуйста, помогите мне.