0xDEADBEEF-Äquivalent für 64-Bit-Entwicklung?
Für die C ++ - Entwicklung für 32-Bit-Systeme (sei es Linux,Mac OS oder Windows,PowerPC
oder x86) Ich habe Zeiger initialisiert, die andernfalls undefiniert wären (z. B. können sie nicht sofort einen richtigen Wert erhalten):
int *pInt = reinterpret_cast<int *>(0xDEADBEEF);
(Um das Tippen und Sein zu sparenTROCKEN die rechte Seite wäre normalerweise in einer Konstanten, z.B. BAD_PTR.)
Wenn pInt dereferenziert wird, bevor es einen korrekten Wert erhält, stürzt es auf den meisten Systemen sofort ab (anstatt viel später abzustürzen, wenn ein Teil des Speichers überschrieben wird oder eine sehr lange Schleife durchläuft).
Natürlich hängt das Verhalten von der zugrunde liegenden Hardware ab (das Abrufen einer 4-Byte-Ganzzahl von der ungeraden Adresse 0xDEADBEEF von einem Benutzerprozess kann durchaus gültig sein), aber der Absturz war für alle Systeme, für die ich bisher entwickelt habe, 100% zuverlässig ( Mac OS68xxx, Mac OS PowerPC, Linux RedHat Pentium, Windows GUI Pentium, Windows Console Pentium). Beispielsweise ist es auf einem PowerPC unzulässig (Busfehler), eine 4-Byte-Ganzzahl von einer ungeraden Adresse abzurufen.
Was ist ein guter Wert für 64-Bit-Systeme?