Ich konstruiere eine Octree-Datenstruktur, und um Speicher für die endgültigen Knoten zu speichern, möchte ich die Werte direkt im Zeiger speichern, anstatt ein Objekt erstellen zu müssen, das 8 untergeordnete Elemente enthält .Speichern vorzeichenloser Ganzzahl in einem Zeiger
Mein Datentyp ist ein uint32_t was bedeutet, dass ein Zeiger genug Bits haben, um es entweder auf x86 oder amd64 zu halten.
Also wie speichere ich eine vorzeichenlose 32bit Integer in einem x86 oder amd64 Zeiger?
Pseudocode:
uint32_t i = 123;
Octree* ptr = i;
uint32_t ii = ptr;
std::cout << ii << std::endl; //Prints 123
Wie ist das möglich?
uint32_t i = 123; Octree * ptr = reinterpret_cast (i); uint32_t ii = reinterpret_cast (ptr); –
FamZ
@FamZ: obwohl auf x86, das sollte funktionieren, es ist technisch illegal und * es gibt * einige bizarre Plattformen, wo dies zu einem Absturz führen würde (auch nur * Verweis * auf ungültige Zeiger löst Hardware-Ausnahmen auf diesen CPUs). –