前几天的遇到的一个错误,引以为戒

今天继续调试昨天的错误 [在导出类中使用CPtrList对象作为私有成员,
想要释放CPtrList中保存的对象的指针时,老是出现错误,
Windows has triggered a breakpoint in zlgLogic.exe.


This may be due to a corruption of the heap, which indicates a bug in zlgLogic.exe or any of the DLLs it has loaded.


This may also be due to the user pressing F12 while zlgLogic.exe has focus.


The output window may have more diagnostic information.
]
在网上查了很久,一开始根据Msdn上的解释,好像是DLL/EXE间都对同一个类有定义
,假如在A定义了类C,B中也定义了类C,类C包含静态变量M_static,B使用A中
导出的C类的对象,原本想改变A地址空间中的C的静态变量,但是在B空间使用,
只能访问到B空间的C的静态变量,所以出现问题。
但是我再CPtrList类的头文件中(afxcoll.h),却没有看到任何静态成员变量。
所以我觉得很大程度不会是这个问题。


今天用了一整天仍然想不出来,后来忽然想到我为什么不看看内存的变化,一看
才知道我使用了memset函数将pUserData置0,殊不知在字节数那里顺手写成
sizeof(UINT32)*Len,明明是UINT8的数据却要写成UINT32,怪不得出错。
这件事告诉我,写程序时每一步都要经过脑子,不要顺手,以免因一时
之失造成大量时间的损失,而且要掌握多一点的调试方法和技巧,假如我一开始

就取找内存,说不一定这一天就不会被浪费了。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值