¿Qué significa "carne muerta"?

91

¿Qué significa la palabra "carne muerta"? Lo leí de una pregunta de una entrevista. Tiene algo que ver con ipv6. Pensé que podría ser un número hexadecimal aleatorio usado para ejemplos, como "El rápido zorro marrón salta sobre el perro perezoso".

¿Mi comprensión es correcta? ¿O tiene un significado más significativo?

Xi 张 熹
fuente
59
¡Para mí significa la hora del almuerzo!
FrustratedWithFormsDesigner
5
"DEADBEEF" se remonta a décadas, quizás incluso antes de Internet. (Supongo que lo estaba usando a finales de los 70 en IBM). Es solo una forma de marcar, de una manera que sea fácilmente visible en los volcados hexadecimales, el almacenamiento que está desasignado o no al que no se debe acceder.
Hot Licks
1
@HotLicks: de hecho, catb.org/jargon/html/D/DEADBEEF.html
Olivier Dulac

Respuestas:

106

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

"Dead beef" es una oración muy popular en programación, porque se construye solo con las letras af, que se usan en notación hexadecimal. Los dos puntos al principio y en el medio de la oración hacen de esta oración una dirección IPv6 (teóricamente) válida.

Dustin Laine
fuente
45
para asegurarse de que las respuestas sigan ahí incluso después de que el sitio vinculado ya no exista. Wikipedia siempre está cambiando y está / ha sido bloqueada en algunos países por diferentes razones (pornografía [infantil] / la verdad "incorrecta"). Por lo tanto, es mejor hacer que su respuesta sea independiente y solo use enlaces para respuestas / citas detalladas. Solo mis dos centavos.
josefx
46

Es una expresión inventada que usa solo las letras AF, que se usa a menudo cuando se requiere un número hexadecimal reconocible. Algunos sistemas lo usan para varios propósitos, como mostrar la memoria que se ha liberado y no debe volver a ser referenciada. En un depurador, este valor que aparece podría ser una señal de que ha cometido un error. De Wikipedia :

0xDEADBEEF ("carne muerta") es utilizado por los sistemas IBM RS / 6000, Mac OS en procesadores PowerPC de 32 bits y Commodore Amiga como un valor mágico de depuración. En Solaris de Sun Microsystems, marca la memoria del kernel liberada. En OpenVMS que se ejecuta en procesadores Alpha, se puede ver DEAD_BEEF presionando CTRL-T.

El número 0xDEADBEEF es igual al número decimal menos reconocible 3735928559 (sin signo) o -559038737 (con signo).

Mark Byers
fuente
21
pero ¿qué hay del 55378008 al revés? (sin firmar)
mVChr
¡O la dirección IPv4 222.173.190.239!
Alyssa Haroldsen
41

El valor de 0xDEADBEEF tiene tres beneficios prácticos, principalmente para sistemas más antiguos. Los viejos hacks de ensamblador / C, como yo, lo usarían para llenar la memoria no asignada para solucionar problemas de memoria. Además, es un juego de palabras del término argot "carne muerta". El programador es carne muerta si DEADBEEF termina en sus punteros. Felicito al tipo que pensó por primera vez en usar el valor DEADBEEF. Es inteligente en muchos sentidos.

En cuanto a razones prácticas, en primer lugar, es más notable en un volcado de memoria hexadecimal porque en realidad deletrea palabras en lugar de valores hexadecimales aleatorios.

En segundo lugar, si el valor termina en un puntero, es más probable que induzca una falla de memoria fuera de rango. Una dirección de DEADBEEF estaba fuera del rango de direcciones de los sistemas (ahora estamos hablando de sistemas del siglo pasado) independientemente del endian del sistema.

En tercer lugar, es más probable que induzca una falla en los sistemas que requieren valores uniformes de puntero para acceder a datos de 16/32/64 bits. Es más probable que el valor falle porque ambos valores de 16 bits (DEAD, BEEF) son impares.

BSalita
fuente
1
Esta es una de las respuestas SO más interesantes que he leído en algún tiempo. ¡Gracias @BSalita!
Steve Jansen
19

Dado que las direcciones IPv6 están escritas en notación hexadecimal, puede utilizar "Hexspeak" (números del 0 al 9 y letras af) en las direcciones.

Hay una serie de palabras que puede utilizar como direcciones válidas para momorizarlas mejor.

Si ping6 www.facebook.com -nobtendrá algo como "2a03: 2880: f01c: 601: face: b00c : 0: 1".

Aquí hay unos ejemplos:

  • : atta :: (Affe - German for Monkey - visto en un vlan para el consejo de administración)
  • : 1bad: babe :: (one bad babe - visto en un smtp-honeypot)
  • : badc: ab1e :: (cable defectuoso - visto como subred para una vlan no segura)
  • : da7a :: (Datos - visto para servidores de archivos)
  • : d1a1 :: (Marcado - visto para VPN Dial-In)
Martín Seitl
fuente
3

La gente normalmente lo usa para indicar valores ficticios. Creo que se usó principalmente antes de la idea de punteros NULL.

Perrito
fuente
5
DEADBEEF se usaba comúnmente para marcar la memoria liberada, por lo que sería obvio cuando tenía un puntero IIRC colgando.
Chuck
2

Es un número mágico que se usa en varios lugares porque también es legible en inglés, lo que lo hace destacar. Hay una lista parcial en Wikipedia .

dsolimano
fuente
2

Se utilizó como patrón para almacenar en la memoria como una serie de bytes hexadecimales (0xde, 0xad, 0xbe, 0xef). Podía ver si la memoria estaba dañada debido a fallas de hardware, saturación del búfer, etc.

Larry
fuente
-1

0xDEADBEEF normalmente se llena en las matrices de memoria para que cualquier excepción cuando se señala incorrectamente o para saber que el búfer se sobrepasa, etc.

msathia
fuente
Este punto de vista está lejos del punto de vista de que todo el mundo esperaría que no tenga ningún problema en sí mismo y podría tener razón, pero sin pruebas lo hace increíble.
shalomb