Co oznacza słowo „martwa wołowina”? Przeczytałem to z pytania do wywiadu. Ma to coś wspólnego z ipv6. Pomyślałem, że może to być losowa liczba szesnastkowa używana w przykładach, na przykład „Szybki brązowy lis przeskakuje nad leniwym psem”.
Czy moje rozumienie jest prawidłowe? Czy ma bardziej znaczące znaczenie?
Odpowiedzi:
http://en.wikipedia.org/wiki/Hexspeak
http://www.urbandictionary.com/define.php?term=dead%3Abeef
„Martwa wołowina” jest bardzo popularnym zdaniem w programowaniu, ponieważ jest zbudowane wyłącznie z liter af, które są używane w notacji szesnastkowej. Dwukropki na początku i w środku zdania sprawiają, że jest to (teoretycznie) prawidłowy adres IPv6.
źródło
Jest to zmyślone wyrażenie wykorzystujące tylko litery AF, często używane, gdy wymagana jest rozpoznawalna liczba szesnastkowa. Niektóre systemy używają go do różnych celów, takich jak wyświetlanie pamięci, która została zwolniona i nie należy do niej odwoływać się ponownie. W debugerze ta wartość może oznaczać, że popełniłeś błąd. Z Wikipedii :
Liczba 0xDEADBEEF jest równa mniej rozpoznawalnej liczbie dziesiętnej 3735928559 (bez znaku) lub -559038737 (ze znakiem).
źródło
Wartość 0xDEADBEEF ma trzy praktyczne zalety, głównie w przypadku starszych systemów. Stare metody asemblera / C, takie jak ja, używałyby go do wypełnienia nieprzydzielonej pamięci, aby rozwiązać problemy z pamięcią. Jest to również gra słów slangowych „martwe mięso”. Programista jest martwy, jeśli DEADBEEF znajdzie się w jego wskazówkach. Gratuluję facetowi, który jako pierwszy pomyślał o użyciu wartości DEADBEEF. Jest sprytny na wiele sposobów.
Z powodów praktycznych, po pierwsze, jest to bardziej zauważalne w szesnastkowym zrzucie pamięci, ponieważ w rzeczywistości zapisuje słowa, a nie losowe wartości szesnastkowe.
Po drugie, jeśli wartość znajdzie się we wskaźniku, bardziej prawdopodobne jest wywołanie błędu poza zakresem pamięci. Adres DEADBEEF był poza zakresem adresów systemów (mówimy teraz o systemach z ubiegłego wieku), niezależnie od endian systemu.
Po trzecie, bardziej prawdopodobne jest wywołanie błędu w systemach, które wymagają nawet wartości wskaźników granicznych w celu uzyskania dostępu do danych 16/32/64-bitowych. Wartość jest bardziej prawdopodobna, ponieważ obie wartości 16-bitowe (DEAD, BEEF) są nieparzyste.
źródło
Ponieważ adresy IPv6 są zapisywane w notacji szesnastkowej, w adresach można używać „Hexspeak” (cyfry 0-9 i litery af).
Istnieje wiele słów, których możesz użyć jako prawidłowych adresów, aby lepiej je ujednolicić.
Jeśli
ping6 www.facebook.com -n
otrzymasz coś w rodzaju „2a03: 2880: f01c: 601: face: b00c : 0: 1”.Oto kilka przykładów:
źródło
Jest również używany do celów debugowania.
Oto przydatna lista niektórych z tych wartości:
http://en.wikipedia.org/wiki/Magic_number_%28programming%29#Magic_debug_values
źródło
Ludzie zwykle używają go do wskazania wartości fikcyjnych. Myślę, że był używany przede wszystkim przed pomysłem wskaźników NULL.
źródło
To magiczna liczba używana w różnych miejscach, ponieważ zdarza się, że jest czytelna również w języku angielskim, dzięki czemu się wyróżnia. W Wikipedii jest częściowa lista .
źródło
Był używany jako wzorzec do przechowywania w pamięci jako seria bajtów szesnastkowych (0xde, 0xad, 0xbe, 0xef). Można było sprawdzić, czy pamięć nie została uszkodzona z powodu awarii sprzętu, przepełnienia bufora itp.
źródło
0xDEADBEEF jest zwykle wypełniane w tablicach pamięci, aby każdy wyjątek, gdy został nieprawidłowo wskazany lub aby wiedzieć, że bufor działa, itp.,
źródło