Ich kenne das Konzept von LIFO, Push, Pop.Gibt die Adresse der Variablen ihre Position im RAM an?
Wenn ein Code die Adresse einer Variablen wie 2245781
zurückgibt, unter der Annahme von Dezimal, heißt das wirklich, dass die Variable auf dem 2245781st
Byte auf dem Stapel ist? Und wenn ich es umwandeln in Gigabyte wird das innerhalb der verwendeten Menge des RAM in diesem Moment sein? Wenn nicht, warum? Ist es auch für Haufen?
Einfach nur neugierig ..
Wenn Sie von Virtualisierung sprechen, meinen Sie eine Variable, die von zwei Prozessen verwendet wird, mit unterschiedlichen Adresswerten für jeden Prozess, aber im Speicher identisch ist? Ich weiß Stack liegt in der Erinnerung selbst, aber was ich meinte war, wenn ich den 'Byte-Wert' der gedruckten Adresse konvertieren kann, sollte es immer kleiner oder gleich den verwendeten Bytes im Hauptspeicher sein, angenommen die gedruckte Adresse war die tatsächliche Adresse selbst, keine virtuelle (wenn meine erste Aussage in diesem Kommentar richtig war). – Kameshwaran
Nein, andersherum. Prozesse (im Allgemeinen) teilen keinen Speicher, daher befinden sich die Variablen an verschiedenen Orten im physischen Speicher. Aber die virtuellen Adressen der Variablen können durchaus die gleichen sein, da sie virtuell sind, sehen sie für jeden Prozess so aus, als ob er alleine im Speicher wäre. Und nein, es gibt keine Garantie, dass Adressen von 0 vergeben werden, so dass Sie eine solche Adresse nicht interpretieren können. Für virtuelle Adressen gibt es oft eine Randomisierung, wodurch sie noch undurchsichtiger werden. – unwind