Könnte sein, dass ich etwas Offensichtliches übersehe, aber wo sind Zeiger-Metadaten gespeichert? Zum Beispiel, wenn ich einen 32-Bit-int-Zeiger ptr
habe und ich ptr++
ausführe, weiß ich, dass 4 Bytes im Speicher vorrücken. Wenn ich jedoch einen 64-Bit-Integer-Zeiger habe, weiß er, dass er 8 Bytes vorrücken soll. Wer verfolgt also, welche Art von Zeiger ptr
ist und wo ist er gespeichert? Der Einfachheit halber können Sie dies auf C ++ beschränken.
In der Symboltabelle während der Compiler läuft. Nirgends, während Ihr Programm ausgeführt wird, oder eher implizit in dem vom Compiler erzeugten Code niedrigerer Ebene.
Es wird nirgendwo gespeichert, es wird zur Kompilierzeit bestimmt. Nehmen Sie diesen Code als Beispiel:
%Vor%