Was bedeutet "totes Rindfleisch"?


89

Was bedeutet das Wort "totes Rindfleisch"? Ich habe es aus einer Interviewfrage gelesen. Es hat etwas mit IPv6 zu tun. Ich dachte, es könnte eine zufällige Hex-Zahl sein, die für Beispiele verwendet wird, wie "Der schnelle braune Fuchs springt über den faulen Hund".

Ist mein Verständnis richtig? Oder hat es eine bedeutendere Bedeutung?


57
Für mich bedeutet es Mittag!
FrustratedWithFormsDesigner

5
"DEADBEEF" reicht Jahrzehnte zurück, vielleicht sogar vor dem Internet. (Ich würde vermuten, dass ich es Ende der 70er Jahre bei IBM verwendet habe.) Es ist nur eine Möglichkeit, Speicher, der freigegeben wurde oder auf andere Weise nicht zugänglich ist, auf eine Weise zu markieren, die in Hex-Dumps leicht sichtbar ist.
Hot Licks

Antworten:


105

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

"Dead Beef" ist ein sehr beliebter Satz in der Programmierung, da er nur aus Buchstaben af ​​besteht, die in hexadezimaler Notation verwendet werden. Doppelpunkte am Anfang und in der Mitte des Satzes machen diesen Satz zu einer (theoretisch) gültigen IPv6-Adresse.


45
um sicherzustellen, dass die Antworten auch dann noch vorhanden sind, wenn die verlinkte Site nicht mehr existiert. Wikipedia ändert sich ständig und ist / wurde in einigen Ländern aus verschiedenen Gründen blockiert ([Kinder-] Porno / die "falsche" Wahrheit). Daher ist es am besten, Ihre Antwort eigenständig zu machen und nur Links für detaillierte Antworten / Zitate zu verwenden. Nur meine zwei Cent.
Josefx

45

Es ist ein erfundener Ausdruck, der nur die Buchstaben AF verwendet und häufig verwendet wird, wenn eine erkennbare Hexadezimalzahl erforderlich ist. Einige Systeme verwenden es für verschiedene Zwecke, z. B. zum Anzeigen des freigegebenen Speichers, auf den nicht erneut verwiesen werden sollte. In einem Debugger kann dieser Wert ein Zeichen dafür sein, dass Sie einen Fehler gemacht haben. Aus Wikipedia :

0xDEADBEEF ("Dead Beef") wird von IBM RS / 6000-Systemen, Mac OS auf 32-Bit-PowerPC-Prozessoren und dem Commodore Amiga als magischer Debug-Wert verwendet. Unter Solaris von Sun Microsystems markiert es den freigegebenen Kernelspeicher. Auf OpenVMS, das auf Alpha-Prozessoren ausgeführt wird, kann DEAD_BEEF durch Drücken von STRG-T angezeigt werden.

Die Zahl 0xDEADBEEF entspricht der weniger erkennbaren Dezimalzahl 3735928559 (ohne Vorzeichen) oder -559038737 (mit Vorzeichen).


20
aber was ist mit 55378008 auf dem Kopf? (nicht signiert)
mVChr

Oder die IPv4-Adresse 222.173.190.239!
Alyssa Haroldsen

41

Der Wert von 0xDEADBEEF bietet drei praktische Vorteile, hauptsächlich für ältere Systeme. Alte Assembler / C-Hacks wie ich würden es verwenden, um nicht zugewiesenen Speicher zu füllen, um Speicherprobleme zu lösen. Es ist auch ein Wortspiel des Slang-Begriffs "totes Fleisch". Der Programmierer ist totes Fleisch, wenn DEADBEEF in seinen Zeigern landet. Ich gratuliere dem Mann, der zuerst daran gedacht hat, den Wert DEADBEEF zu verwenden. Es ist in vielerlei Hinsicht klug.

Aus praktischen Gründen fällt dies erstens in einem Hex-Speicherauszug besser auf, da tatsächlich Wörter geschrieben werden, im Gegensatz zu zufälligen Hex-Werten.

Zweitens, wenn der Wert in einem Zeiger angezeigt wird, ist es wahrscheinlicher, dass ein Speicherfehler außerhalb des Bereichs auftritt. Eine Adresse von DEADBEEF lag außerhalb des Adressbereichs von Systemen (wir sprechen jetzt von Systemen des letzten Jahrhunderts), unabhängig vom Endian des Systems.

Drittens ist es wahrscheinlicher, dass auf Systemen, die für den Zugriff auf 16/32/64-Bit-Daten gerade Grenzzeigerwerte benötigen, ein Fehler auftritt. Es ist wahrscheinlicher, dass der Wert fehlerhaft ist, da beide 16-Bit-Werte (DEAD, BEEF) ungerade sind.


1
Dies ist eine der interessantesten SO-Antworten, die ich seit einiger Zeit gelesen habe. Vielen Dank, dass Sie @BSalita!
Steve Jansen

19

Da IPv6-Adressen in Hex-Notation geschrieben sind, können Sie in Adressen "Hexspeak" (Zahlen 0-9 und Buchstaben af) verwenden.

Es gibt eine Reihe von Wörtern, die Sie als gültige Adressen verwenden können, um sie besser zu vereinheitlichen.

Wenn Sie ping6 www.facebook.com -netwas wie "2a03: 2880: f01c: 601: face: b00c : 0: 1" erhalten.

Hier sind einige Beispiele:

  • : affe :: (Affe - Deutsch für Affen - gesehen in einem VLAN für Vorstand)
  • : 1bad: babe :: (ein schlechtes babe - gesehen bei einem smtp-honeypot)
  • : badc: ab1e :: (schlechtes Kabel - wird als Subnetz für ein unsicheres VLAN angesehen)
  • : da7a :: (Daten - für Dateiserver angezeigt)
  • : d1a1 :: (Wählen - gesehen für VPN-Einwahl)


3

Normalerweise wird es verwendet, um Dummy-Werte anzuzeigen. Ich denke, dass es hauptsächlich vor der Idee von NULL-Zeigern verwendet wurde.


5
DEADBEEF wurde häufig verwendet, um freigegebenen Speicher zu markieren, sodass es offensichtlich ist, wenn Sie einen baumelnden Zeiger IIRC haben.
Chuck

2

Es ist eine magische Zahl, die an verschiedenen Stellen verwendet wird, weil sie auch auf Englisch lesbar ist, was sie auszeichnet. Es gibt eine unvollständige Liste auf Wikipedia .


2

Es wurde als Muster verwendet, um es als eine Reihe von Hex-Bytes (0xde, 0xad, 0xbe, 0xef) im Speicher zu speichern. Sie konnten feststellen, ob der Speicher aufgrund eines Hardwarefehlers, Pufferüberlaufs usw. beschädigt war.


-1

0xDEADBEEF wird normalerweise in die Speicher-Arrays gefüllt, so dass jede Ausnahme, wenn sie falsch angezeigt wird oder wenn der Puffer über läuft, usw. ausgeführt wird.


Diese Ansicht ist weit entfernt von der Ansicht, dass jeder erwarten würde, dass dies selbst kein Problem hat und richtig sein könnte, aber ohne Beweise macht es unglaublich.
Shalomb
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.