Что делает слово "мертвая говядина", средняя? Я считал его из вопроса об интервью. Это имеет некоторое отношение к ipv6. Я полагал, что это могло быть случайное шестнадцатеричное число, используемое для примеров, как "Быстрая коричневая лиса перепрыгивает через лентяя".
Мое понимание корректно? Или это имеет более значительное значение?
http://en.wikipedia.org/wiki/Hexspeak
http://www.urbandictionary.com/define.php?term=dead%3Abeef
"Мертвая говядина" - очень популярное предложение в программировании, потому что оно построено только из букв a-f, которые используются в шестнадцатеричной системе счисления. Двоеточие в начале и в середине предложения делает это предложение (теоретически) допустимым адресом IPv6.
Он использовался в качестве шаблона для хранения в памяти в виде последовательности шестнадцатеричных байтов (0xde, 0xad, 0xbe, 0xef). Вы могли видеть, не была ли повреждена память из-за аппаратного сбоя, переполнения буфера и т. Д.
Значение 0xDEADBEEF имеет три практические выгоды, в основном для старых систем. Старые хаки на ассемблере/C, вроде меня, использовали его для заполнения нераспределенной памяти для устранения проблем с памятью. Кроме того, это каламбур сленгового термина "мертвое мясо". Программист - мертвое мясо, если DEADBEEF попадает в его указатели. Я поздравляю того, кто первым придумал использовать значение DEADBEEF. Это умно во многих отношениях.
Что касается практических причин, то, во-первых, оно более заметно в шестнадцатеричном дампе памяти, поскольку в нем действительно пишутся слова, а не случайные шестнадцатеричные значения.
Во-вторых, если значение попадает в указатель, оно с большей вероятностью вызовет ошибку памяти вне диапазона. Адрес DEADBEEF был вне диапазона адресов систем (мы говорим сейчас о системах прошлого века), независимо от системного эндиана.
В-третьих, это значение с большей вероятностью вызовет ошибку на системах, которые требуют четных граничных значений указателя для доступа к 16/32/64-битным данным. Вероятность ошибки выше, поскольку оба 16-битных значения (DEAD, BEEF) нечетные.
Обычно люди используют его для обозначения фиктивных значений. Я думаю, что он в первую очередь использовался до идеи NULL-указателей.
Это также используется в целях отладки.
Вот удобный список некоторых из этих значений:
http://en.wikipedia.org/wiki/Magic_number_%28programming%29#Magic_debug_values
0xDEADBEEF обычно заполняется в массивах памяти, так что любое исключение при неправильном указании или при знании переполнения буфера выполняется и т. Д.,
Это придуманное выражение, использующее только буквы A-F, часто используется, когда требуется узнаваемое шестнадцатеричное число. Некоторые системы используют его для различных целей, например, чтобы показать память, которая была освобождена и к которой не следует обращаться снова. В отладчике появление такого значения может быть признаком того, что вы допустили ошибку. Из Википедии:
0xDEADBEEF ("мертвая говядина") используется в системах IBM RS/6000, Mac OS на 32-битных процессорах PowerPC и Commodore Amiga в качестве магического значения отладки. В Solaris компании Sun Microsystems он помечает освобожденную память ядра. В OpenVMS, работающей на процессорах Alpha, DEAD_BEEF можно увидеть, нажав CTRL-T.
Число 0xDEADBEEF равно менее узнаваемому десятичному числу 3735928559 (без знака) или -559038737 (со знаком).
Это магическое число используется в различных местах, потому что оно также читается по-английски, что выделяет его среди других. Неполный список есть в Википедии.