"thịt bò chết" nghĩa là gì?


90

Từ "thịt bò chết" có nghĩa là gì? Tôi đọc nó từ một câu hỏi phỏng vấn. Nó liên quan đến ipv6. Tôi nghĩ rằng nó có thể là một số hex ngẫu nhiên được sử dụng cho các ví dụ, như "Con cáo nâu nhanh nhẹn nhảy qua con chó lười biếng".

Tôi hiểu có đúng không? Hay nó có ý nghĩa quan trọng hơn?


57
Đối với tôi nó có nghĩa là giờ ăn trưa!
FrustratedWithFormsDesigner

5
"DEADBEEF" có từ nhiều thập kỷ trước, có lẽ trước cả khi có Internet. (Tôi đoán rằng tôi đã sử dụng nó vào cuối những năm 70 tại IBM.) Nó chỉ là một cách để đánh dấu, theo cách dễ dàng nhìn thấy trong các kết xuất hex, bộ nhớ được phân bổ hoặc không được truy cập.
Hot Licks vào

Câu trả lời:


106

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

"Thịt bò chết" là một câu rất phổ biến trong lập trình, vì nó chỉ được xây dựng từ các chữ cái af, được sử dụng trong ký hiệu thập lục phân. Dấu hai chấm ở đầu và giữa câu khiến câu này trở thành địa chỉ IPv6 hợp lệ (về mặt lý thuyết).


45
để đảm bảo rằng câu trả lời vẫn còn đó ngay cả khi trang web được liên kết không còn tồn tại. Wikipedia luôn thay đổi và bị / đã bị chặn ở một số quốc gia vì những lý do khác nhau (khiêu dâm [trẻ em] / sự thật "sai"). Vì vậy, tốt nhất là để câu trả lời của bạn đứng độc lập và chỉ sử dụng các liên kết cho câu trả lời / trích dẫn chi tiết. Chỉ hai xu của tôi.
josefx

45

Đó là một biểu thức được tạo thành chỉ sử dụng các chữ cái AF, thường được sử dụng khi yêu cầu số thập lục phân có thể nhận dạng được. Một số hệ thống sử dụng nó cho các mục đích khác nhau như hiển thị bộ nhớ đã được giải phóng và không nên tham chiếu lại. Trong trình gỡ lỗi, giá trị này hiển thị có thể là một dấu hiệu cho thấy bạn đã mắc lỗi. Từ Wikipedia :

0xDEADBEEF ("thịt bò chết") được sử dụng bởi các hệ thống IBM RS / 6000, Mac OS trên bộ xử lý PowerPC 32-bit và Commodore Amiga làm giá trị gỡ lỗi kỳ diệu. Trên Solaris của Sun Microsystems, nó đánh dấu bộ nhớ nhân được giải phóng. Trên OpenVMS chạy trên bộ xử lý Alpha, có thể thấy DEAD_BEEF bằng cách nhấn CTRL-T.

Số 0xDEADBEEF bằng số thập phân ít nhận biết hơn 3735928559 (không dấu) hoặc -559038737 (có dấu).


20
nhưng 55378008 lộn ngược thì sao? (chưa ký)
mVChr

Hoặc địa chỉ IPv4 222.173.190.239!
Alyssa Haroldsen

41

Giá trị của 0xDEADBEEF có ba lợi ích thiết thực, hầu hết dành cho các hệ thống cũ hơn. Những kẻ hack hợp ngữ / C cũ, như tôi, sẽ sử dụng nó để lấp đầy bộ nhớ chưa được phân bổ để giải quyết các vấn đề về bộ nhớ. Ngoài ra, nó là một cách chơi chữ của thuật ngữ tiếng lóng "thịt chết". Lập trình viên sẽ chết nếu DEADBEEF xuất hiện trong con trỏ của anh ta. Tôi xin chúc mừng anh chàng đầu tiên nghĩ đến việc sử dụng giá trị DEADBEEF. Nó thông minh theo nhiều cách.

Về lý do thực tế, thứ nhất, nó đáng chú ý hơn trong kết xuất bộ nhớ hex vì nó thực sự đánh vần các từ trái ngược với các giá trị hex ngẫu nhiên.

Thứ hai, nếu giá trị kết thúc trong một con trỏ, nhiều khả năng gây ra lỗi bộ nhớ ngoài phạm vi. Một địa chỉ của DEADBEEF nằm ngoài phạm vi địa chỉ của các hệ thống (bây giờ chúng ta đang nói đến các hệ thống của thế kỷ trước) bất kể endian của hệ thống là gì.

Thứ ba, có nhiều khả năng gây ra lỗi trên các hệ thống yêu cầu giá trị con trỏ ranh giới chẵn để truy cập dữ liệu 16/32/64-bit. Giá trị có nhiều khả năng bị lỗi hơn vì cả hai giá trị 16 bit (DEAD, BEEF) đều là số lẻ.


1
Đây là một trong những câu trả lời SO thú vị nhất mà tôi đã đọc trong một thời gian. Xin cảm ơn @BSalita!
Steve Jansen

19

Vì Địa chỉ IPv6 được viết bằng ký hiệu Hex nên bạn có thể sử dụng "Hexspeak" (số 0-9 và các chữ cái af) trong Địa chỉ.

Có một số từ bạn có thể sử dụng làm địa chỉ hợp lệ để tạo động lực tốt hơn cho chúng.

Nếu bạn ping6 www.facebook.com -nsẽ nhận được một cái gì đó như "2a03: 2880: f01c: 601: face: b00c : 0: 1".

Dưới đây là một số ví dụ:

  • : affe :: (Affe - tiếng Đức nghĩa là Khỉ - thấy ở ban quản lý vlan)
  • : 1bad: babe :: (one bad babe - nhìn thấy tại một smtp-honeypot)
  • : badc: ab1e :: (cáp kém - được coi là mạng con cho một vlan không an toàn)
  • : da7a :: (Dữ liệu - được xem cho máy chủ tệp)
  • : d1a1 :: (Quay số - được xem đối với Quay số VPN)


3

Mọi người thường sử dụng nó để chỉ ra các giá trị giả. Tôi nghĩ rằng nó chủ yếu được sử dụng trước khi có ý tưởng về con trỏ NULL.


5
DEADBEEF thường được sử dụng để đánh dấu bộ nhớ đã giải phóng, vì vậy sẽ hiển nhiên khi bạn có một con trỏ IIRC treo lơ lửng.
Chuck

2

Đó là một con số kỳ diệu được sử dụng ở nhiều nơi vì nó cũng có thể đọc được bằng tiếng Anh, khiến nó trở nên nổi bật. Có một phần danh sách trên Wikipedia .


2

Nó được sử dụng như một mẫu để lưu trữ trong bộ nhớ dưới dạng một chuỗi các byte hex (0xde, 0xad, 0xbe, 0xef). Bạn có thể xem bộ nhớ có bị hỏng do lỗi phần cứng hay không, vượt quá bộ đệm, v.v.


-1

0xDEADBEEF thường được điền vào các mảng bộ nhớ để bất kỳ ngoại lệ nào khi được trỏ sai hoặc để biết bộ đệm khi chạy, v.v.,


Quan điểm này khác xa với quan điểm mà mọi người đều mong đợi rằng bản thân nó không có vấn đề gì và có thể đúng nhưng không có bằng chứng khiến điều đó trở nên khó tin.
shalomb
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.