що означає «мертва яловичина»?


91

Що означає слово «мертва яловичина»? Я прочитав це з питання інтерв’ю. Це пов’язано з ipv6. Я припустив, що це може бути випадкове шістнадцяткове число, яке використовується для прикладів, наприклад, "Швидка коричнева лисиця стрибає над ледачою собакою".

Чи правильно розумію моє розуміння? Або це має більш значуще значення?


59
Для мене це означає обідній час!
FrustratedWithFormsDesigner

5
"DEADBEEF" сягає десятиліть, можливо, навіть до Інтернету. (Я гадаю, я використовував його наприкінці 70-х в IBM.) Це просто спосіб позначити таким способом, який легко помітний на шістнадцяткових дампах, сховище, яке звільнено або іншим чином недоступне.
Hot Licks

Відповіді:


106

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

"Мертва яловичина" є дуже популярним реченням у програмуванні, оскільки воно будується лише з букв af, які використовуються в шістнадцяткових позначеннях. Двокрапки на початку та в середині речення роблять це речення (теоретично) дійсною адресою IPv6.


45
щоб переконатися, що відповіді все ще є, навіть після того, як зв’язаний сайт більше не існує. Вікіпедія постійно змінюється і заблокована / заблокована в деяких країнах з різних причин (порно [дитини] / "неправильна" правда). Тож найкраще зробити свою відповідь самостійною та використовувати лише посилання для детальних відповідей / цитування. Лише мої два центи.
josefx

45

Це вигаданий вираз, що використовує лише літери AF, який часто використовується, коли потрібна впізнавана шістнадцяткова цифра. Деякі системи використовують його для різних цілей, наприклад для показу пам'яті, яка звільнилася і на яку більше не слід посилатися. У налагоджувачі це значення може відображатися як помилка. З Вікіпедії :

0xDEADBEEF ("мертва яловичина") використовується системами IBM RS / 6000, Mac OS на 32-розрядних процесорах PowerPC та Commodore Amiga як магічне значення для налагодження. На Solaris Sun Microsystems це позначення звільненої пам'яті ядра. У OpenVMS, що працює на процесорах Alpha, DEAD_BEEF можна побачити, натиснувши CTRL-T.

Число 0xDEADBEEF дорівнює менш впізнаваному десятковому числу 3735928559 (без підпису) або -559038737 (з підписом).


20
а як щодо 55378008 догори дном? (без підпису)
mVChr

Або адреса IPv4 222.173.190.239!
Alyssa Haroldsen,

41

Значення 0xDEADBEEF має три практичні переваги, переважно для старих систем. Старі хакери / хакери, такі як я, використовували б його для заповнення нерозподіленої пам'яті для подолання проблем з пам'яттю. Крім того, це каламбур жаргонного терміна "мертве м'ясо". Програміст - це мертве м’ясо, якщо DEADBEEF накручується на його покажчики. Я вітаю хлопця, який вперше задумався використовувати значення DEADBEEF. Це розумно багато в чому.

Що стосується практичних міркувань, по-перше, це помітніше у дампі шістнадцяткової пам'яті, оскільки він насправді пише слова, на відміну від випадкових шістнадцяткових значень.

По-друге, якщо значення потрапляє в покажчик, це, швидше за все, спричиняє помилку, що виходить за межі пам'яті. Адреса DEADBEEF виходила за межі адресного діапазону систем (ми зараз говоримо про системи минулого століття) незалежно від ендіана системи.

По-третє, більше шансів викликати несправність в системах, які потребують навіть значень граничних покажчиків для доступу до 16/32/64-розрядних даних. Значення, швидше за все, є помилковим, оскільки обидва 16-бітові значення (DEAD, BEEF) непарні.


1
Це одна з найцікавіших відповідей SO, яку я прочитав за деякий час. Дякую @BSalita!
Стів Янсен

19

Оскільки IPv6-адреси написані шістнадцятковою нотацією, ви можете використовувати "Hexspeak" (цифри 0-9 та літери af) у Adresses.

Існує ряд слів, які ви можете використовувати як дійсні адреси, щоб краще їх упогадати.

Якщо ви ping6 www.facebook.com -nотримаєте щось на зразок "2a03: 2880: f01c: 601: face: b00c : 0: 1".

Ось кілька прикладів:

  • : afe :: (Affe - німецька для мавпи - бачиться у влані для правління)
  • : 1bad: babe :: (одна погана крихітка - бачимо в smtp-медоносі)
  • : badc: ab1e :: (поганий кабель - розглядається як підмережа для незахищеного vlan)
  • : da7a :: (Дані - видно для файлових серверів)
  • : d1a1 :: (Набір - видно для набору VPN)


3

Люди зазвичай використовують це для позначення фіктивних значень. Я думаю, що це в основному було використано до ідеї покажчиків NULL.


5
DEADBEEF зазвичай використовувався для позначення звільненої пам'яті, тому було б очевидно, коли у вас був звисаючий вказівник IIRC.
Чак

2

Це магічне число, яке використовується в різних місцях, оскільки воно також є читабельним англійською мовою, завдяки чому воно виділяється. У Вікіпедії є частковий список .


2

Він використовувався як шаблон для зберігання в пам'яті у вигляді ряду шістнадцяткових байтів (0xde, 0xad, 0xbe, 0xef). Ви могли побачити, чи не пошкоджена пам’ять через несправність обладнання, перевиконання буфера тощо.


-1

0xDEADBEEF зазвичай заповнюється в масивах пам'яті, так що будь-які винятки при неправильному вказівці або знання буфера над прогонами тощо,


Ця точка зору далека від думки, що кожен міг би очікувати, що сам по собі не має проблем і може бути правильним, але без доказів робить це неймовірним.
Шаломб
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.