博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一些debug常用的"魔法"数值
阅读量:5157 次
发布时间:2019-06-13

本文共 737 字,大约阅读时间需要 2 分钟。

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断点进入.

.

转载于:https://www.cnblogs.com/freedesert/archive/2012/12/25/2832633.html

你可能感兴趣的文章
HTM基础之HTML标签
查看>>
1013 数素数 (20 分)
查看>>
C#_模拟webAp_POST-GET-PUT-DELETE
查看>>
[xUI] ligerUI开发框架简介和搭建
查看>>
称砝码算法//输入与算法分开
查看>>
Win & Mac 系统之间U盘传递的U盘文件格式选取问题
查看>>
Python Web学习笔记之WebSocket原理说明
查看>>
面试必问---HashMap原理分析
查看>>
Android学习笔记——Menu(一)
查看>>
LeetCode_Recover Binary Search Tree
查看>>
Java中的异常和处理详解
查看>>
redhat更改yum源及安装PHP环境
查看>>
分布式监控系统Zabbix3.2对数据库的连接数预警
查看>>
JavaScript 运行机制:Event事件循环机制
查看>>
<a>标签的href和onclick属性
查看>>
面试题:你的Redis怎么持久化的?
查看>>
Python pyQt4/PyQt5 学习笔记4(事件和信号)
查看>>
經典算法002--快速排序
查看>>
C#发布程序添加其他程序文件
查看>>
manacher算法
查看>>