Certains magic number ont une valeur particulière qui est écrite dans la mémoire vive pendant l'allocation dynamique (en) ou la ré-allocation pour permettre un débugage en cas de plantage. Pendant le débugage, la mémoire est généralement affichée en héxadécimal où des codes répétitifs ou en Hexspeak (en) sont facilement reconnaissables.
Ces valeurs sont utilisées de préférence sur des processeurs sans bit d'adressage car ceux-ci planteront s'ils essaient de les utiliser comme pointeur. De même, elles ne doivent pas faire partie du jeu d'instructions.
Vu qu'il soit rare qu'un entier codé sur 32 bit prenne une de ses valeurs, le passage d'un de ces nombres dans un débbugeur ou un core dump (en) indique généralement un dépassement de tampon ou une variable non initialisée.
Code | Description |
---|---|
..FACADE | Utilisé par beaucoup de systèmes d'exploitation temps réel |
8BADF00D | Utilisé par Apple comme code d'exception dans l'iPhone quand une application a pris trop de temps pour se lancer ou se terminer |
A5A5A5A5 | Utilisé sur les systèmes embarqués car la séquence binaire correspondante (10100101) est facilement reconnaissable sur un oscilloscope ou un analyseur logique |
ABABABAB | Utilisé par la fonction HeapAlloc() de Microsoft pour marquer le « no man's land » d'un Guard byte (en) après l'allocation de la mémoire heap |
ABADBABE | Utilisé par Apple comme « Boot Zero Block » |
ABADCAFE | Valeur d'initialisation utilisée pour démasquer les pointeurs brisés |
BAADF00D | Utilisé par la fonction LocalAlloc(LMEM_FIXED) de Microsoft pour marquer la mémoire heap allouée mais non initialisée |
BADBADBADBAD | Utilisé sur les calculateurs de Burroughs Corporation pour repérer la mémoire non-initialisée (mot de 48-bit) |
BADC0FFEE0DDF00D | Utilisé sur le système 64 bits RS/6000 pour indiquer les registres processeurs non-initialisés |
BADCAB1E | Code d'erreur retourné par le debuggeur eVC quand la connexion avec le débuggeur est coupée |
BADDCAFE | Sous Solaris, marque la mémoire du noyau qui n'est pas initialisée (KMEM_UNINITIALIZED_PATTERN) |
BEEFCACE | Utilisé sur le framework .NET comme nombre magique pour les fichiers de ressources (en) |
C0DEDBAD | Utilisé pour le débuggage des tables MMU. |
CAFEBABE | Dans les exécutables Mach-O (Fat binary (en) dans les processeurs 68k et les PowerPC) pour identifier les fichiers objet et les .class java |
CAFEFEED | Sous Solaris, marque la mémoire allouée par la fonction kmemfree() pour le debugage |
CCCCCCCC | Utilisé par la libraire de debugage du C++ de Microsoft pour repérer la mémoire stack non-initialisée |
CDCDCDCD | Utilisé par la libraire de debugage du C++ de Microsoft pour repérer la mémoire heap non-initialisée |
CEFAEDFE | Peut-être vu dans les binaires Mach-O de Mac OS X (voir FEEDFACE ) |
DDDDDDDD | Utilisé par MicroQuill's SmartHeap et le débuggeur mémoire C++ de Microsoft pour marquer la mémoire heap libérée |
DEADBABE | Marque le début des fichiers arena d'IRIX |
DEADBEEF | Connu pour être utilisé sur les systèmes IBM (notamment sur RS/6000), le premier Mac OS (OPENSTEP) et sur le Commodore Amiga. Sous Solaris, marque la mémoire du noyau libérée (KMEM_FREE_PATTERN) |
DEADDEAD | Le code d'erreur STOP de Windows utilisé quand l'utilisateur crash volontairement la machine |
DEADF00D | Marque toutes les nouvelles zones mémoires allouées quand elles n'ont pas été explicitement nettoyées après une corruption |
DEADFA11 | Utilisé par Apple comme code d'exception dans l'iPhone quand l'utilisateur a forcé une application à s'éteindre |
EBEBEBEB | Pour MicroQuill's SmartHeap |
FADEDEAD | Marque le fin des scripts AppleScript |
FDFDFDFD | Utilisé par le débuggeur mémoire C++ de Microsoft pour marquer le « no man's land » d'un Guard byte (en) avant et après la mémoire heap allouée |
FEE1DEAD | Utilisé par l'appel système reboot() de Linux |
FEEDFACE | Peut-être vu sur le binaire PowerPC Mach-O de Mac OS X. Sous Solaris, marque la zone rouge (KMEM_REDZONE_PATTERN) |
FEEEFEEE | Utilisé par la fonction HeapFree() de Microsoft pour marquer la mémoire heap libérée |
La prépondérance de valeur issue de technologies de Microsoft ; elles sont largement commentées dans le livre de Steve Maguire (en) Writing Solid Code (en). Il donne plusieurs critères pour les choisir :
Comme elles sont souvent utilisées pour identifier des zones mémoires quasiment vides, elles tendent parfois à être utilisées dans le langage courant dans le sens « perdu, abandonné, vidé de la mémoire » : par exemple, « Ton programme est DEADBEEF ».