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?

Xi 张 熹
fonte
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
1
@HotLicks: na verdade, catb.org/jargon/html/D/DEADBEEF.html
Olivier Dulac

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.

Dustin Laine
fonte
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).

Mark Byers
fonte
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.

BSalita
fonte
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)
Martin Seitl
fonte
3

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

Cachorro
fonte
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 .

dsolimano
fonte
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.

Larry
fonte
-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.,

msathia
fonte
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