“DEADBEEF”是什么?可能很多人都沒有聽說過。DEADBEEF不是“死牛肉”的意思,而是一個十六進制數字,即0xDEADBEEF。最初使用它的是IBM的RS/6000系統。在該系統中,已分配但還未初始化的內存中用該數字來填充,使得程序員在調試時可以很容易地定位到目標內存區域。
某些其他系統也使用DEADBEEF,例如運行在32位PowerPC處理器上的Mac OS和RS/6000一樣將其用於填充已分配但未初始化的內存;Solaris則用它來標記內核的空閑內存;在嵌入式系統中,經常用DEADBEEF來表示程序出錯奔潰或發生了死鎖。等等。
類似於DEADBEEF這樣的特殊數字還有很多,有一個專門的術語來稱呼它們,即“魔數”,Magic Number。
例如,經常使用VC編寫和調試程序的同學肯定都知道,空字符串在調試或打印時會顯示為很多“燙”字。這是因為VC使用0xCC來填充未初始化的內存,而0xCCCC在Unicode中表示的就是漢語的“燙”字。
可以參考WikiPedia了解關於魔數的更多資料:
Magic Number:http://en.wikipedia.org/wiki/Deadbeef
Hexspeak:http://en.wikipedia.org/wiki/Hexspeak