My Blog! blog.gkong.com   

Tip of my blog

新年快乐!


阅读(1331) 评论(0)
标签(TAG):

image

该致命错误是由于我的Time模块是参考自Microsoft C 运行时库的源文件写的,该BUG已由微软证实。。会造成内存越界!!!(黑客常常就是利用这样的BUG来进行入侵的),跟踪发现如下函数中存在未分配空间即赋值的致命BUG!!!!!!
image
由于struct qzm_tm q_tm;只是声明,而不是定义(结构的定义和自动变量是有区别的,自动变量声明的同时会由运行时自动赋值,之所以运行时对结构的声明不即时进行内存分配是出于声明的结构有可能在之后并不使用上并且结构所占用的内存空间有可能很大,基于C语言设计的本意(程序员确保自已做的是正确的)和出于效率的考虑,声明结构不等于定义了该结构),所以在qzm_gmtime FUN中引用一个声明将会导致系统的随机性崩溃!!!!在Watch中观察该变量会发现该观看的是内存中随机的地址中的内容,如下图所示:
image

解决的办法是使用前定义(也叫声明和赋值同时进行)
struct qzm_tm     q_tm = {0}; //这时在WATCH 窗口中看到的q_tm的内容为全0,说明已正确分配内存空间给该变量。

by 进化中的兔子 发表于:2010/3/2 1:28:56
My subject | 我的主题

New entries | 新发表

Messages Board | 留言板


Guest Comments | 新评注


Blogger Login | 登陆栏
Blog Infomation | 信息栏
博客名称:嵌入式系统&虚拟仪器 日志总数:450 评论数量:277 访问次数:1781245 建立时间::2005年10月25日
Blog Infomation | 搜索栏
Blog Infomation | 收藏栏

XML RSS 2.0

嵌入式系统&虚拟仪器
© COPYRIGHT 2004 ALL RIGHTS RESERVED http://www.gkong.com

中华工控网 | 联系我们 | 工控论坛首页 | 工控博客首页 | 博客注册 | 博客登陆

工控博客管理联系邮箱:工控博客服务邮箱

中华工控网 © Copyright 2013. All rights reserved.