o que significa “carne morta”?


90

O que significa a palavra "carne morta"? Eu li em uma pergunta da entrevista. Tem algo a ver com o ipv6. Achei que poderia ser um número hexadecimal aleatório usado para exemplos, como "A rápida raposa marrom salta sobre o cão preguiçoso".

Meu entendimento está correto? Ou tem um significado mais significativo?


57
Para mim, significa hora do almoço!
FrustratedWithFormsDesigner

5
"DEADBEEF" remonta a décadas, talvez até antes da Internet. (Eu acho que eu estava usando no final dos anos 70 na IBM.) É apenas uma forma de marcar, de uma maneira que seja facilmente visível em dumps hexadecimais, armazenamento que é desalocado ou não pode ser acessado.
Hot Licks

Respostas:


106

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

"Carne morta" é uma frase muito popular em programação, porque é construída apenas a partir de letras af, que são usadas em notação hexadecimal. Dois pontos no início e no meio da frase tornam esta frase um endereço IPv6 (teoricamente) válido.


45
para ter certeza de que as respostas ainda estão lá, mesmo depois que o site vinculado não existir mais. A Wikipedia está sempre mudando e está / foi bloqueada em alguns países por diferentes motivos (pornografia [infantil] / a verdade "errada"). Portanto, é melhor deixar sua resposta isolada e usar apenas links para respostas / citações detalhadas. Apenas meus dois centavos.
Josefx

45

É uma expressão inventada que usa apenas as letras AF, frequentemente usada quando um número hexadecimal reconhecível é necessário. Alguns sistemas o usam para vários fins, como mostrar a memória que foi liberada e não deve ser referenciada novamente. Em um depurador, esse valor exibido pode ser um sinal de que você cometeu um erro. Da Wikipedia :

0xDEADBEEF ("carne morta") é usado por sistemas IBM RS / 6000, Mac OS em processadores PowerPC de 32 bits e o Commodore Amiga como um valor mágico de depuração. No Solaris da Sun Microsystems, ele marca a memória do kernel liberada. No OpenVMS em execução em processadores Alpha, DEAD_BEEF pode ser visto pressionando CTRL-T.

O número 0xDEADBEEF é igual ao número decimal menos reconhecível 3735928559 (sem sinal) ou -559038737 (com sinal).


20
mas e quanto a 55378008 de cabeça para baixo? (não assinado)
mVChr

Ou o endereço IPv4 222.173.190.239!
Alyssa Haroldsen

41

O valor de 0xDEADBEEF tem três benefícios práticos, principalmente para sistemas mais antigos. Antigos hacks de assembler / C, como eu, o usariam para preencher a memória não alocada para resolver problemas de memória. Além disso, é um trocadilho com a gíria "carne morta". O programador está morto se DEADBEEF aparecer em seus ponteiros. Parabenizo o cara que primeiro pensou em usar o valor DEADBEEF. É inteligente de várias maneiras.

Por razões práticas, em primeiro lugar, é mais perceptível em um despejo de memória hexadecimal porque na verdade soletra palavras em oposição a valores hexadecimais aleatórios.

Em segundo lugar, se o valor acabar em um ponteiro, é mais provável que induza uma falha de memória fora do intervalo. Um endereço DEADBEEF estava fora da faixa de endereços dos sistemas (estamos falando de sistemas do século passado agora), independentemente do endian do sistema.

Em terceiro lugar, é mais provável que induza uma falha em sistemas que requerem valores de ponteiro de limite pares para acessar dados de 16/32/64 bits. É mais provável que o valor falhe porque ambos os valores de 16 bits (DEAD, BEEF) são ímpares.


1
Esta é uma das respostas de SO mais interessantes que li há algum tempo. Obrigada @BSalita!
Steve Jansen

19

Como os endereços IPv6 são escritos em notação hexadecimal, você pode usar "Hexspeak" (números 0-9 e letras af) em endereços.

Há uma série de palavras que você pode usar como endereços válidos para melhor transformá-las em um momor.

Se você ping6 www.facebook.com -nobter algo como "2a03: 2880: f01c: 601: face: b00c : 0: 1".

aqui estão alguns exemplos:

  • : affe :: (Affe - Alemão para macaco - visto em uma vlan para conselho de administração)
  • : 1bad: babe :: (um bad babe - visto em um smtp-honeypot)
  • : badc: ab1e :: (cabo ruim - visto como sub-rede para uma vlan não segura)
  • : da7a :: (Dados - vistos para servidores de arquivos)
  • : d1a1 :: (Dial - visto para VPN Dial-In)


3

As pessoas normalmente o usam para indicar valores fictícios. Acho que foi usado principalmente antes da ideia dos ponteiros NULL.


5
DEADBEEF era comumente usado para marcar memória liberada, então seria óbvio quando você tivesse um ponteiro IIRC pendente.
Chuck

2

É um número mágico usado em vários lugares porque também pode ser lido em inglês, o que o faz se destacar. Existe uma lista parcial na Wikipedia .


2

Foi usado como um padrão para armazenar na memória como uma série de bytes hexadecimais (0xde, 0xad, 0xbe, 0xef). Você pode ver se a memória foi corrompida por causa de falha de hardware, saturação de buffer, etc.


-1

0xDEADBEEF é normalmente preenchido nas matrizes de memória para que qualquer exceção quando apontada incorretamente ou para saber o buffer over funciona, etc.,


Essa visão está longe da visão de que todo mundo espera que não tenha nenhum problema e que possa estar certo, mas sem evidências o torna inacreditável.
shalomb
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.