Unterschied zwischen GDB-Adressen und "echten" Adressen?

Wenn ich ein C / C ++ - Programm in gdb (nach dem Kompilieren mit dem Flag -g) ausführe und die Adressen bestimmter Variablen, Argumente usw. überprüfe und es dann außerhalb von gdb ausführe (mit./) Entsprechen diese Adressen denen, die ich in GDB gesehen habe? Wenn sie unterschiedlich sind, sind sie normalerweise ähnlich oder werden sie sich drastisch unterscheiden?

Ich frage dies, weil ich ein Pufferüberlaufprogramm habe, das perfekt in GDB (mit und ohne Haltepunkte) funktioniert, aber wenn ich versuche, es außerhalb von GDB auszuführen, funktioniert es nicht.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage