永发信息网

cppcheck 是怎么检查变量越界的

答案:1  悬赏:10  手机版
解决时间 2021-11-08 04:52
cppcheck 是怎么检查变量越界的
最佳答案
Class Base 是测试代码,检测内存越界的代码是下面这段代码
#define CHECKNU 6893 \\除0外任意值;
#define PRECHECK_FIELD(i) int __precheck##i;
#define POSCHECK_FIELD(i) int __poscheck##i;
#define IN1T_CHECK(o,i){\
(o)->__precheck##i=CHECKNU;\
(o)->__poscheck##i=CHECKNU;\
}
#define CHECK(o,i){\
if((o)->__precheck##i!=CHECKNU ||(o)->__poscheck##i!=CHECKNU){\
printf("%s:%d,memory access out of range with checknu
pre %d,pos %d”,__FILE__,__LINE__,(o)->__precheck##i,(o)->__poscheck##i);\
}\
)
说一下他的思路,在每次申明内存块之前后各申明一个标志变量,并赋特定值,这样理论上在内存块里他们是连续的。看下面的语句
PRECHECK_FIELD(0);
char mem[1024];
POSCHECK_FIELD(0);
在每次使用自己定义的内存块mem前后,都检查一下,看之前定义的标志变量有没有被更改,如果有,则内存被越界操作了。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
平利有到十堰的班车吗,都几点发车
oppo赠送的台灯怎么关
据说饮食的有个是容易怀男孩的,是吃的什么呢
一直听说奇骏今年底新款上市,大家有看到新车
手机版中文tor浏览器是怎样的?
布莱克叔叔会在赛尔号5出现吗
一念净心是道场,胜造恒沙七宝塔,宝塔毕竟碎为
求解该热力学问题,详细一点。
晚睡对身体不好吗
想知道: 潍坊市潍坊特检院在哪?
解x 0.06=1.9求助一下亲们
迷上bb霜瓶子上面怎么确定色号
为什么跳蚤有惊人的跳跃本领?
澄江通力汽车运输有限公司机动车驾驶技术培训
IGBT中硅片与铜板之间是什么材料
推荐资讯
世界上的鲸最大多少米,多大
包头市寰游私享旅游服务有限公司怎么样?
猪皮是怎么加工成皮制品的
《骑马与砍杀》战团全按键分别是什么?
从麓谷锦和园去梅西湖西坐几路公交车
梁河县河西邮政所地址在什么地方,想过去办事
你喜欢吃家里吃还是喜欢在单位食堂吃???
盘锦和沈阳哪适合生活
东方明珠地址在哪,我要去那里办事,
外形看起来不胖,可是体重很重是怎么回事?
陕西盛和源地产开发楼盘五证全吗
如何用条型码识别一品御赐天子西凤酒的真伪
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?