Почему при запуске кода из gdb я получаю одинаковые адреса для объявленных переменных, но при выполнении двоичного кода я не получаю одинаковые адреса.
#include<stdio.h>
void main()
{
int *x,q;
//I saw the address of the variable q in this program through gdb during the __1st__ execution.
//I re-compiled the program to make x to point to this address.
x=0x7fffffffe2bc;
*x=3;
printf("%d",(*x));
}
Я запустил программу через gdb, и она никогда не перешла из-под контроля.
$ gdb -q ./a.out
Reading symbols from /home/eknath/needed2/a.out...done.
(gdb) r
Starting program: /home/eknath/needed2/a.out
3
Program exited normally.
(gdb) q
$
Но нормальное выполнение программы всегда дает SEGFAULT.
$ ./a.out
Segmentation fault
Я не знаю, является ли этот вопрос дубликатом Всегда ли это адрес программы отладки GDB?
ПРИМЕЧАНИЕ: я не выключил ASLR