que signifie «bœuf mort»?


90

Que signifie le mot «bœuf mort»? Je l'ai lu à partir d'une question d'entrevue. Cela a quelque chose à voir avec ipv6. J'ai pensé que cela pourrait être un nombre hexadécimal aléatoire utilisé pour des exemples, comme "Le renard brun rapide saute par-dessus le chien paresseux".

Ma compréhension est-elle correcte? Ou cela a-t-il une signification plus significative?


57
Pour moi, cela signifie l'heure du déjeuner!
FrustratedWithFormsDesigner

5
"DEADBEEF" remonte à des décennies, peut-être même avant Internet. (Je suppose que je l'utilisais à la fin des années 70 chez IBM.) C'est juste un moyen de marquer, d'une manière qui est facilement visible dans les vidages hexadécimaux, le stockage qui est désalloué ou auquel il est impossible d'accéder.
Hot Licks du

Réponses:


106

http://en.wikipedia.org/wiki/Hexspeak
http://www.urbandictionary.com/define.php?term=dead%3Abeef

"Dead beef" est une phrase très populaire en programmation, car elle est construite uniquement à partir des lettres af, qui sont utilisées en notation hexadécimale. Les deux points au début et au milieu de la phrase font de cette phrase une adresse IPv6 (théoriquement) valide.


45
pour vous assurer que les réponses sont toujours là même après que le site lié n'existe plus. Wikipédia est en constante évolution et est / a été bloqué dans certains pays pour différentes raisons (pornographie [enfantine] / la «fausse» vérité). Il est donc préférable de rendre votre réponse autonome et d'utiliser uniquement des liens pour des réponses / citations détaillées. Juste mes deux centimes.
josefx

45

C'est une expression inventée utilisant uniquement les lettres AF, souvent utilisées lorsqu'un nombre hexadécimal reconnaissable est requis. Certains systèmes l'utilisent à des fins diverses telles que l'affichage de la mémoire qui a été libérée et ne doit plus être référencée. Dans un débogueur, cette valeur peut être le signe que vous avez commis une erreur. De Wikipedia :

0xDEADBEEF ("dead beef") est utilisé par les systèmes IBM RS / 6000, Mac OS sur les processeurs PowerPC 32 bits et le Commodore Amiga comme valeur de débogage magique. Sur Solaris de Sun Microsystems, il marque la mémoire du noyau libérée. Sur OpenVMS fonctionnant sur des processeurs Alpha, DEAD_BEEF peut être vu en appuyant sur CTRL-T.

Le nombre 0xDEADBEEF est égal au nombre décimal le moins reconnaissable 3735928559 (non signé) ou -559038737 (signé).


20
mais qu'en est-il 55378008 à l'envers? (non signé)
mVChr

Ou l'adresse IPv4 222.173.190.239!
Alyssa Haroldsen

41

La valeur de 0xDEADBEEF présente trois avantages pratiques, principalement pour les systèmes plus anciens. Les vieux hacks assembleur / C, comme moi, l'utilisaient pour remplir la mémoire non allouée afin de résoudre les problèmes de mémoire. En outre, c'est un jeu de mots du terme d'argot «viande morte». Le programmeur est de la viande morte si DEADBEEF se retrouve dans ses pointeurs. Je félicite le gars qui a d'abord pensé à utiliser la valeur DEADBEEF. C'est intelligent à bien des égards.

Pour des raisons pratiques, tout d'abord, il est plus visible dans un vidage de mémoire hexadécimal car il épelle en fait des mots par opposition à des valeurs hexadécimales aléatoires.

Deuxièmement, si la valeur se retrouve dans un pointeur, il est plus probable qu'elle induise un défaut de mémoire hors plage. Une adresse de DEADBEEF était hors de la plage d'adresses des systèmes (nous parlons maintenant des systèmes du siècle dernier) quel que soit l'extrémité du système.

Troisièmement, il est plus susceptible d'induire une erreur sur les systèmes qui nécessitent même des valeurs de pointeur de limite pour accéder aux données 16/32/64 bits. La valeur est plus susceptible d'être défaillante car les deux valeurs de 16 bits (DEAD, BEEF) sont impaires.


1
C'est l'une des réponses SO les plus intéressantes que j'ai lues depuis un certain temps. Merci @BSalita!
Steve Jansen

19

Puisque les adresses IPv6 sont écrites en notation hexadécimale, vous pouvez utiliser "Hexspeak" (nombres 0-9 et lettres af) dans les adresses.

Il y a un certain nombre de mots que vous pouvez utiliser comme adresses valides pour mieux les momoriser.

Si vous ping6 www.facebook.com -nobtenez quelque chose comme "2a03: 2880: f01c: 601: face: b00c : 0: 1".

Voici quelques exemples:

  • : affe :: (Affe - German for Monkey - vu sur un vlan pour le conseil d'administration)
  • : 1bad: babe :: (un bad babe - vu dans un smtp-honeypot)
  • : badc: ab1e :: (mauvais câble - vu comme sous-réseau pour un vlan non sécurisé)
  • : da7a :: (Données - vues pour les serveurs de fichiers)
  • : d1a1 :: (Dial - vu pour VPN Dial-In)


3

Les gens l'utilisent normalement pour indiquer des valeurs factices. Je pense qu'il était principalement utilisé avant l'idée des pointeurs NULL.


5
DEADBEEF était couramment utilisé pour marquer la mémoire libérée, de sorte que ce serait évident lorsque vous aviez un pointeur IIRC suspendu.
Chuck

2

C'est un nombre magique utilisé à divers endroits car il se trouve également être lisible en anglais, ce qui le distingue. Il y a une liste partielle sur Wikipedia .


2

Il a été utilisé comme modèle pour stocker en mémoire une série d'octets hexadécimaux (0xde, 0xad, 0xbe, 0xef). Vous pouvez voir si la mémoire a été corrompue en raison d'une panne matérielle, des dépassements de tampon, etc.


-1

0xDEADBEEF est normalement rempli dans les tableaux de mémoire de sorte que toute exception lorsqu'elle est mal pointée ou pour connaître le tampon sur les exécutions, etc.,


Ce point de vue est loin de celui que tout le monde pourrait s'attendre à ce que cela ne pose aucun problème en soi et pourrait avoir raison, mais sans preuves, cela est incroyable.
shalomb
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.