Ich arbeite mit Hashtabellen und bin auf diese Funktion gestoßen. Aber was bedeutet hash / sizeof (void *)? und der Kommentar danach - loswerden von bekannten 0 Bits?
%Vor% Auf den meisten Computern und ABIs sind die Zeiger normalerweise wortorientiert. Das Teilen durch die sizeof
-Zeiger ignoriert im wesentlichen die kleinsten Bits (z. B. sind 3 niedrigste Bits von Byte-Adressen bei den meisten 64-Bit-Prozessoren 0, da ein 64-Bit-Wort 8 Bytes von jeweils 8 Bits hat).
Es sieht so aus, als ob es eine Funktion ist, einen Zeiger zu hashen. Zeiger zeigen auf Objekte, die oft ausgerichtet sind. Wenn das Objekt, auf das gezeigt wird, mit "neu" belegt ist, ist es am wahrscheinlichsten, dass es an der Wortgrenze ausgerichtet ist.
Daher kann es möglicherweise immer durch 8 teilbar sein (oder 4 wenn das die Wortgröße ist) (wenn es in eine Zahl umgewandelt wird) und die Funktion teilt Ihre Zahl mit 8, um Ihnen das zu geben, was wirklich wichtig ist.
Tags und Links c++ hash sizeof void-pointers