что делает “мертвую говядину”, среднюю?

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

Мое понимание корректно? Или это имеет более значительное значение?

85
задан Jeff Yates 10 May 2011 в 17:07
поделиться

8 ответов

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

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

98
ответ дан 24 November 2019 в 08:13
поделиться

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

2
ответ дан 24 November 2019 в 08:13
поделиться

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

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

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

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

37
ответ дан 24 November 2019 в 08:13
поделиться

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

3
ответ дан 24 November 2019 в 08:13
поделиться

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

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

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

13
ответ дан 24 November 2019 в 08:13
поделиться

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

-1
ответ дан 24 November 2019 в 08:13
поделиться

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

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

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

43
ответ дан 24 November 2019 в 08:13
поделиться

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

2
ответ дан 24 November 2019 в 08:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: