“死牛肉”这个词是什么意思?我是从一个面试问题中读到的。它与ipv6有关。我想它可能是一个随机的十六进制数字,例如“快速棕色狐狸跳过懒狗”。
我的理解正确吗?还是有更重要的意义?
“死牛肉”这个词是什么意思?我是从一个面试问题中读到的。它与ipv6有关。我想它可能是一个随机的十六进制数字,例如“快速棕色狐狸跳过懒狗”。
我的理解正确吗?还是有更重要的意义?
http://en.wikipedia.org/wiki/Hexspeak
http://www.urbandictionary.com/define.php?term=dead%3Abeef
“死牛肉”在编程中是一个非常流行的句子,因为它仅由字母 af 构成,这些字母以十六进制表示法使用。句子开头和中间的冒号使该句子成为(理论上)有效的 IPv6 地址。
0xDEADBEEF 的值具有三个实际好处,主要针对较旧的系统。像我这样的老汇编程序/C hack 会使用它来填充未分配的内存以解决内存问题。此外,它是俚语“死肉”的双关语。如果 DEADBEEF 在他的指针中结束,程序员就是死肉。我祝贺第一个想到使用值 DEADBEEF 的人。它在很多方面都很聪明。
至于实际原因,首先,它在十六进制内存转储中更明显,因为它实际上拼写单词而不是随机十六进制值。
其次,如果值以指针形式结束,则更有可能引发内存超出范围错误。无论系统的字节序如何,DEADBEEF 的地址都超出了系统的地址范围(我们现在谈论的是上世纪的系统)。
第三,它更有可能在需要边界指针值来访问 16/32/64 位数据的系统上引发故障。该值更容易出错,因为这两个 16 位值(DEAD、BEEF)都是奇数。
它是仅使用字母 AF 组成的表达式,通常在需要可识别的十六进制数字时使用。一些系统将它用于各种目的,例如显示已释放且不应再次引用的内存。在调试器中出现的这个值可能表明你犯了一个错误。来自维基百科:
0xDEADBEEF(“死牛肉”)被 IBM RS/6000 系统、32 位 PowerPC 处理器上的 Mac OS 和 Commodore Amiga 用作神奇的调试值。在 Sun Microsystems 的 Solaris 上,它标志着释放的内核内存。在 Alpha 处理器上运行的 OpenVMS 上,按下 CTRL-T 可以看到 DEAD_BEEF。
数字 0xDEADBEEF 等于不易识别的十进制数 3735928559(无符号)或 -559038737(有符号)。
由于 IPv6 地址是用十六进制表示法编写的,因此您可以在地址中使用“Hexspeak”(数字 0-9 和字母 a)。
您可以使用许多单词作为有效地址来更好地记住它们。
如果你ping6 www.facebook.com -n
会得到类似“2a03:2880:f01c:601: face:b00c :0:1”的信息。
这里有些例子:
它也用于调试目的。
以下是其中一些值的方便列表:
http://en.wikipedia.org/wiki/Magic_number_%28programming%29#Magic_debug_values
人们通常用它来表示虚拟值。我认为它主要是在 NULL 指针的想法之前使用的。
这是一个在各个地方使用的神奇数字,因为它也恰好可以用英文阅读,使其脱颖而出。Wikipedia上有部分列表。
它被用作将一系列十六进制字节(0xde、0xad、0xbe、0xef)存储在内存中的模式。您可以查看内存是否由于硬件故障、缓冲区溢出等而损坏。