¿Diferencia entre direcciones gdb y direcciones "reales"?

Si ejecuto un programa C / C ++ en gdb (después de compilar con el indicador -g) y examino las direcciones de ciertas variables, argumentos ... etc, y luego lo ejecuto fuera de gdb (usando./) ¿serán estas direcciones las mismas que vi en gdb? Si son diferentes, ¿son generalmente similares o serán drásticamente diferentes?

Le pregunto esto porque tengo un programa de desbordamiento de búfer que funciona perfectamente en gdb (con y sin puntos de interrupción), sin embargo, cuando intento ejecutarlo fuera de gdb no funciona.

Respuestas a la pregunta(3)

Su respuesta a la pregunta