Wenn ich zwei ungültige Zeiger subtrahiere, bekomme ich den relativen Abstand in Bytes (mindestens auf meinem Testsystem, das ich tue) zwischen den Zeigerstandorten. In welchem Typ sollte ich das Ergebnis speichern, damit es mit 64-Bit-Systemen kompatibel ist? Ist size_t der richtige Typ oder vielleicht lang?C: Welcher Typ ist der Unterschied zwischen zwei ungültigen Zeigern?
Hintergrund: Wir müssen überprüfen, ob ein gegebener void pointer sicher ist, als Doppelzeiger benutzt zu werden. Wir haben den Zeiger auf int gesetzt und geprüft, dass die unteren drei Bits Null sind, aber unsere aktuellen Codierungsstandards erlauben es nicht, Zeiger auf Integertypen zu werfen. Ich überlege, den Unterschied zwischen dem void-Zeiger und dem NULL-Zeiger zu berechnen und zu überprüfen, ob dieser Unterschied durch 8 teilbar ist. Angenommen, dass der NULL-Zeiger immer 8-Byte ausgerichtet ist?
"unsere aktuellen Codierungsstandards erlauben es nicht mehr, Zeiger auf ganzzahlige Typen zu setzen." -> Schade, dass du nicht nach "uintptr_t" umwandeln kannst. – chux