что значит "мертвая говядина"? - PullRequest
84 голосов
/ 25 мая 2010

Что означает слово «мертвая говядина»? Я прочитал это из интервью. Это как-то связано с ipv6. Я подумал, что это может быть случайное шестнадцатеричное число, используемое для примеров, например, «Быстрая коричневая лиса перепрыгивает через ленивую собаку».

Правильно ли мое понимание? Или это имеет более существенное значение?

Ответы [ 9 ]

95 голосов
/ 25 мая 2010

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

«Мертвая говядина» - очень популярное предложение в программировании, потому что оно построено только из букв a-f, которые используются в шестнадцатеричной записи. Двоеточия в начале и в середине предложения делают это предложение (теоретически) действительным адресом IPv6.

41 голосов
/ 25 мая 2010

Это составленное выражение, использующее только буквы A-F, часто используемое, когда требуется узнаваемое шестнадцатеричное число. Некоторые системы используют его для различных целей, например, для отображения памяти, которая была освобождена и на которую больше нельзя ссылаться. В отладчике это значение может быть признаком того, что вы допустили ошибку. От Википедия :

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

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

34 голосов
/ 26 мая 2010

Значение 0xDEADBEEF имеет три практических преимущества, в основном для старых систем. Старые хакеры на ассемблере / C, как и я, использовали бы его для заполнения нераспределенной памяти, чтобы устранить проблемы с памятью. Кроме того, это каламбур жаргонного термина "мертвое мясо". Программист - мертвое мясо, если DEADBEEF оказывается в его указателях. Я поздравляю парня, который впервые подумал об использовании значения DEADBEEF. Это умно во многих отношениях.

Что касается практических соображений, то, во-первых, это более заметно в шестнадцатеричном дампе памяти, потому что оно фактически записывает слова, а не случайные шестнадцатеричные значения.

Во-вторых, если значение указывается в указателе, это может вызвать ошибку памяти вне диапазона. Адрес DEADBEEF был вне диапазона адресов систем (мы говорим о системах прошлого века) независимо от порядкового номера системы.

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

16 голосов
/ 11 июля 2014

Поскольку IPv6-адреса записаны в шестнадцатеричной записи, вы можете использовать «Hexspeak» (цифры 0-9 и буквы af) в адресах.

Существует ряд слов, которые вы можете использовать в качестве действительных адресов длялучше поморите их.

Если вы ping6 www.facebook.com -n, вы получите что-то вроде "2a03: 2880: f01c: 601: face: b00c : 0: 1".

Вот несколько примеров:

  • : affe :: (Affe - немецкий язык для Обезьяны - виден в vlan для правления)
  • : 1bad: babe :: (один плохой ребенок -видно в smtp-honeypot)
  • : badc: ab1e :: (плохой кабель - рассматривается как подсеть для незащищенного vlan)
  • : da7a :: (данные - просматривается для файловых серверов)
  • : d1a1 :: (набор номера - для VPN-подключения)
13 голосов
/ 25 мая 2010

Он также используется для отладки.

Вот удобный список некоторых из этих значений:

http://en.wikipedia.org/wiki/Magic_number_%28programming%29#Magic_debug_values

3 голосов
/ 25 мая 2010

Люди обычно используют его для обозначения фиктивных значений. Я думаю, что он в основном использовался до идеи указателей NULL.

2 голосов
/ 25 мая 2010

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

2 голосов
/ 25 мая 2010

Это магическое число, используемое в разных местах, потому что оно также читается на английском языке, что выделяет его. Частичный список в Википедии .

0 голосов
/ 25 мая 2010

0xDEADBEEF обычно заполняется в массивах памяти, так что любое исключение при неправильном указании или при превышении буфера и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...