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