Wo werden Zeigermetadaten gespeichert?

8

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.

    
bmalicoat 03.02.2010, 06:05
quelle

3 Antworten

18

Es wird nirgends per se gespeichert. Der Compiler betrachtet den Typ von ptr und wandelt die Operation ++ in ein Inkrement der korrekten Anzahl von Bytes um.

    
mbarnett 03.02.2010, 06:10
quelle
7

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.

    
dmckee 03.02.2010 06:11
quelle
2

Es wird nirgendwo gespeichert, es wird zur Kompilierzeit bestimmt. Nehmen Sie diesen Code als Beispiel:

%Vor%     
Andreas Bonini 03.02.2010 08:12
quelle

Tags und Links