что значит "мертвая говядина"?


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

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

9 77

9 ответов:

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

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

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

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

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

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

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

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

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

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

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

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

поскольку IPv6-адреса записываются в шестнадцатеричной системе счисления, вы можете использовать "Hexspeak" (цифры 0-9 и буквы a-f) в адресах.

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

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

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

  • : affe:: (Affe-немецкий для Обезьяны-видел в vlan для управления доска)
  • : 1bad: babe:: (один плохой ребенок-видел на smtp-honeypot)
  • : badc: ab1e:: (плохой кабель-рассматривается как подсеть для небезопасной vlan)
  • : da7a:: (данные-видно для файловых серверов)
  • :d1a1:: (Dial-seen для VPN Dial-In)

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

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

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

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