Was sind die realen Anwendungsfälle für markierte Zeiger?
Dies ist hauptsächlich auf das Lesen über kleine 64-Bit-Systeme und mögliche Verwendungen von 64-Bit-Wortzeigern zurückzuführen .
Nach meinem Verständnis sind markierte Zeiger Adressen, die aufgrund des möglichen Adressraums in dieser bestimmten Architektur zusätzliche Informationen in Bits enthalten können.
Aber ist es dann möglich, markierte Zeiger über triviale Fälle hinaus zu verwenden? Irgendwelche coolen Ideen / Beispiele?
Gibt es beliebte Bibliotheken, Frameworks, die 64-Bit-Zeiger über markierte Zeiger nutzen? Ist das auf jeder Hardware möglich?
Antworten:
Die Critbit-Trie-Bibliothek verwendet markierte Zeiger, um zwischen internen und externen Knoten im Trie zu unterscheiden. Indem Sie sicherstellen, dass neue Knoten einem bestimmten Wert zugeordnet werden, wird sichergestellt, dass einige der unteren Bits der Adresse Null sind, deren Anzahl von der gewünschten Ausrichtung abhängt. Sie können dann andere Informationen in diesen Bits speichern ... bei kritischen Knoten wird das LSB gesetzt, wenn der Knoten extern ist (ein Blatt). Denken Sie daran, die Adresse zu deaktivieren, wenn Sie sie verwenden möchten.
Es spart, eine zusätzliche Mitgliedsvariable in der Knotenstruktur zu haben.
quelle