一些debug常用的魔法数值
生活随笔
收集整理的這篇文章主要介紹了
一些debug常用的魔法数值
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
https://www.cnblogs.com/awpatp/archive/2012/08/08/2628024.html
一些debug常用的"魔法"數(shù)值
| CCCCCCCC | 微軟C++ debugging運(yùn)行時(shí)用該值標(biāo)記未初始化過的棧內(nèi)存 | ? |
| CDCDCDCD | 微軟C++ debugging運(yùn)行時(shí)用該值標(biāo)記未初始化過的堆內(nèi)存 | ? |
| FEEEFEEE | 微軟的HeapFree函數(shù)用該值來標(biāo)記被釋放了的堆內(nèi)存 | ? |
| ABABABAB | 為堆分配的內(nèi)存后, 微軟的HeapAlloc函數(shù)用該值標(biāo)記"no man's land"哨兵位. | 所謂哨兵位(Guard Byte)就是所分配的內(nèi)存的起始和終止地址上的內(nèi)存的值. |
| BAADF00D | 微軟的LocalAlloc函數(shù)用該值標(biāo)記為初始化過的已分配的堆內(nèi)存 | ? |
| BEEFCACE | 微軟的.NET使用該值作為resource file的magic | ? |
| DDDDDDDD | 微軟C++ debugging 堆用該值標(biāo)記被釋放了的堆內(nèi)存 | ? |
| FDFDFDFD | 為堆分配內(nèi)存前后, 微軟C++ debugging 堆用該值標(biāo)記"no man's land"哨兵位. | ? |
| ? | ? | ? |
?
上述這些值應(yīng)用在微軟的技術(shù)中并不是偶然的, 在Writing Solid Code中, Steve Maguire對(duì)此進(jìn)行了討論. 他給出了這些值的一些標(biāo)準(zhǔn).
- 這些值應(yīng)該是沒啥用的, 操作這些數(shù)值的算法應(yīng)該是做些特殊的事情的. 比如說, 0這樣的數(shù)值就不符合這一條.
- 這些值應(yīng)該可以很容易地在debugger中做為非法數(shù)值被識(shí)別出來.
- 在沒有byte alignment的機(jī)器上, 這些值應(yīng)該是奇數(shù), 所以, 間接引用這些值作為地址會(huì)引發(fā)異常.
- 如果這些值作為代碼被執(zhí)行的話, 會(huì)引發(fā)一場(chǎng)或者引發(fā)debugger斷點(diǎn)進(jìn)入.
?
參考資料
==================
Magic number (programming)
http://en.wikipedia.org/wiki/Magic_number_%28programming%29
總結(jié)
以上是生活随笔為你收集整理的一些debug常用的魔法数值的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 百度云获取外链直接下载突破限速
- 下一篇: 2016年10月起微软更改了更新服务模型