“ เนื้อตาย” แปลว่าอะไร?


94

คำว่า "เนื้อตาย" หมายถึงอะไร? ฉันอ่านจากคำถามสัมภาษณ์ มีบางอย่างที่เกี่ยวข้องกับ ipv6 ฉันคิดว่ามันอาจเป็นเลขฐานสิบหกแบบสุ่มที่ใช้เป็นตัวอย่างเช่น "สุนัขจิ้งจอกสีน้ำตาลกระโดดข้ามสุนัขขี้เกียจ"

ความเข้าใจของฉันถูกต้องหรือไม่? หรือมีความหมายที่สำคัญกว่า?


59
สำหรับฉันมันหมายถึงเวลาอาหารกลางวัน!
FrustratedWithFormsDesigner

5
"DEADBEEF" ย้อนกลับไปหลายสิบปีก่อนที่อินเทอร์เน็ต (ฉันเดาว่าฉันใช้มันในช่วงปลายยุค 70 ที่ IBM) เป็นเพียงวิธีการทำเครื่องหมายในลักษณะที่มองเห็นได้ง่ายในฐานข้อมูลฐานสิบหกหน่วยเก็บข้อมูลที่ไม่ได้จัดสรรหรือไม่สามารถเข้าถึง
Hot Licks

2
@HotLicks: แน่นอนcatb.org/jargon/html/D/DEADBEEF.html
Olivier Dulac

คำตอบ:


107

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

"Dead beef" เป็นประโยคที่ได้รับความนิยมมากในการเขียนโปรแกรมเนื่องจากสร้างจากตัวอักษร af เท่านั้นซึ่งใช้ในสัญกรณ์ฐานสิบหก เครื่องหมายโคลอนในตอนต้นและตรงกลางของประโยคทำให้ประโยคนี้เป็นที่อยู่ IPv6 ที่ถูกต้อง (ตามหลักวิชา)


46
เพื่อให้แน่ใจว่าคำตอบยังคงอยู่ที่นั่นแม้ว่าจะไม่มีไซต์ที่เชื่อมโยงแล้วก็ตาม วิกิพีเดียมีการเปลี่ยนแปลงอยู่เสมอและ / ถูกบล็อกในบางประเทศด้วยเหตุผลที่แตกต่างกัน (สื่อลามก [[เด็ก] / ความจริง "ผิด") ดังนั้นจึงเป็นการดีที่สุดที่จะทำให้คำตอบของคุณเป็นแบบเดี่ยวและใช้ลิงก์สำหรับคำตอบ / การอ้างอิงโดยละเอียดเท่านั้น แค่สองเซ็นต์ของฉัน
josefx

47

เป็นการแสดงออกที่สร้างขึ้นโดยใช้ตัวอักษร AF เท่านั้นซึ่งมักใช้เมื่อต้องใช้เลขฐานสิบหกที่จดจำได้ บางระบบใช้เพื่อวัตถุประสงค์ต่างๆเช่นแสดงหน่วยความจำที่ได้รับการปลดปล่อยและไม่ควรอ้างอิงอีก ในดีบักเกอร์ค่าที่ปรากฏขึ้นอาจเป็นสัญญาณว่าคุณทำผิดพลาด จากWikipedia :

0xDEADBEEF ("เนื้อตาย") ถูกใช้โดยระบบ IBM RS / 6000, Mac OS บนโปรเซสเซอร์ PowerPC 32 บิตและ Commodore Amiga เป็นค่าดีบักเวทย์มนตร์ บน Solaris ของ Sun Microsystems จะทำเครื่องหมายหน่วยความจำเคอร์เนลที่เป็นอิสระ บน OpenVMS ที่ทำงานบนโปรเซสเซอร์ Alpha สามารถดู DEAD_BEEF ได้โดยกด CTRL-T

ตัวเลข 0xDEADBEEF เท่ากับเลขฐานสิบที่จำได้น้อยกว่า 3735928559 (ไม่ได้ลงชื่อ) หรือ -559038737 (ลงชื่อ)


21
แต่ 55378008 กลับหัวล่ะ? (ไม่ได้ลงนาม)
mVChr

หรือที่อยู่ IPv4 222.173.190.239!
Alyssa Haroldsen

43

ค่าของ 0xDEADBEEF มีประโยชน์ในทางปฏิบัติ 3 ประการส่วนใหญ่สำหรับระบบเก่า แอสเซมเบลอร์ / C แฮ็กแบบเก่าเช่นฉันจะใช้มันเพื่อเติมเต็มหน่วยความจำที่ไม่ได้จัดสรรเพื่อเกลี้ยกล่อมปัญหาหน่วยความจำ นอกจากนี้ยังเป็นคำสแลงของคำสแลง "เนื้อตาย" โปรแกรมเมอร์คือเนื้อตายหาก DEADBEEF จบลงในคำแนะนำ ฉันขอแสดงความยินดีกับผู้ชายที่คิดจะใช้ DEADBEEF เป็นครั้งแรก มันฉลาดในหลาย ๆ

สำหรับเหตุผลในทางปฏิบัติประการแรกจะเห็นได้ชัดเจนกว่าในการถ่ายโอนข้อมูลหน่วยความจำฐานสิบหกเพราะจริงๆแล้วมันสะกดคำต่างจากค่าฐานสิบหกแบบสุ่ม

ประการที่สองหากค่านั้นขึ้นที่ตัวชี้ก็มีแนวโน้มที่จะก่อให้เกิดความผิดพลาดของหน่วยความจำนอกระยะ ที่อยู่ของ DEADBEEF อยู่นอกช่วงที่อยู่ของระบบ (ตอนนี้เรากำลังพูดถึงระบบของศตวรรษที่แล้ว) โดยไม่คำนึงถึง endian ของระบบ

ประการที่สามมีแนวโน้มที่จะก่อให้เกิดข้อผิดพลาดในระบบที่ต้องการค่าตัวชี้ขอบเขตสำหรับการเข้าถึงข้อมูล 16/32/64 บิต ค่านี้มีแนวโน้มที่จะผิดพลาดเนื่องจากทั้งค่า 16 บิต (DEAD, BEEF) เป็นคี่


2
นี่เป็นหนึ่งในคำตอบ SO ที่น่าสนใจที่สุดที่ฉันเคยอ่านมา ขอบคุณ @BSalita!
Steve Jansen

20

เนื่องจาก IPv6-Adresses เขียนด้วยสัญลักษณ์ Hex คุณจึงสามารถใช้ "Hexspeak" (ตัวเลข 0-9 และตัวอักษร af) ใน Adresses ได้

มีคำหลายคำที่คุณสามารถใช้เป็นที่อยู่ที่ถูกต้องเพื่อปรับแต่งคำเหล่านั้นให้ดีขึ้น

หากคุณping6 www.facebook.com -nจะได้รับสิ่งที่ต้องการ "2a03: 2880: f01c: 601: face: b00c : 0: 1"

นี่คือตัวอย่างบางส่วน:

  • : affe :: (Affe - German for Monkey - ดูที่ vlan สำหรับบอร์ดบริหาร)
  • : 1bad: babe :: (one bad babe - seen at a smtp-honeypot)
  • : badc: ab1e :: (สายเคเบิลไม่ดี - ถูกมองว่าเป็นซับเน็ตสำหรับ vlan ที่ไม่ปลอดภัย)
  • : da7a :: (ข้อมูล - เห็นสำหรับเซิร์ฟเวอร์ไฟล์)
  • : d1a1 :: (Dial - เห็นสำหรับ VPN Dial-In)


3

คนปกติใช้เพื่อบ่งชี้ค่าดัมมี่ ฉันคิดว่าคำนี้ถูกใช้เป็นหลักก่อนแนวคิดของตัวชี้ NULL


5
DEADBEEF มักใช้เพื่อทำเครื่องหมายหน่วยความจำที่ว่างดังนั้นจะเห็นได้ชัดเมื่อคุณมีตัวชี้ที่ห้อยอยู่ IIRC
Chuck

2

เป็นตัวเลขวิเศษที่ใช้ในสถานที่ต่างๆเนื่องจากสามารถอ่านได้ในภาษาอังกฤษทำให้โดดเด่น มีรายการบางส่วนบนวิกิพีเดีย


2

มันถูกใช้เป็นรูปแบบในการจัดเก็บในหน่วยความจำเป็นชุดเลขฐานสิบหก (0xde, 0xad, 0xbe, 0xef) คุณสามารถดูได้ว่าหน่วยความจำเสียหายหรือไม่เนื่องจากฮาร์ดแวร์ล้มเหลวบัฟเฟอร์มากเกินไป ฯลฯ


-1

โดยปกติ 0xDEADBEEF จะถูกเติมในอาร์เรย์หน่วยความจำเพื่อให้มีข้อยกเว้นใด ๆ เมื่อชี้ผิดหรือรู้ว่าบัฟเฟอร์ในการรัน ฯลฯ


มุมมองนี้ห่างไกลจากมุมมองที่ทุกคนคาดหวังว่าไม่มีปัญหาในตัวเองและอาจถูกต้อง แต่ไม่มีหลักฐานทำให้ไม่น่าเชื่อ
shalomb
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.