Why is it that when running code from gdb, I get the same addresses for the variables declared, but while just executing the binary I don't get the same addresses.
#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));
}
I ran the program through gdb and it never Segfaulted.
$ 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
$
But normal execution of the program always produces a SEGFAULT.
$ ./a.out
Segmentation fault
I don't know if this question is a duplicate of Is this always the address for GDB debug program?
NOTE: I have not switched off ASLR