高级会员
注册日期: 06-11
帖子: 1527
精华: 15
现金: 6353 标准币
资产: 6353 标准币
|
回复: 查内存覆盖的经验,大家能不能总结一下?
1.查系统回调函数的调用规则是否正确,__cdecl和__stdcall的清栈角色不同有可能造成访问违规
2.用折半法确认出错位置,出错位置前对该内存的操作都可疑,在分配该内存处打断点,记下分配的内存地址,新建断点,新断点条件是该内存发生变化即断下
3.检查多线程访问变量的互斥和同步
4.若使用了别的dll的导出数据(导出全局变量是没有模块引用计数的),dll是否被提前释放?
5.是否多次delete同一变量,带[]的和不带的配套
6.crt是否是正确的线程版本
养好写代码习惯,分配内存后马上写释放内存的代码,以保证代码永远是健康的可测的.若分配和释放之间有多个返回点(return,exception),可新建ResourceHelper,利用ctor和dtor进行资源管理
发现有错误时,马上停止手头工作,把bug解决了再说
|