最近碰到的几个比较麻烦的bug

这几个bug的最终解决方案都很简单,代码也很少;但是找到问题根源的时间却不少。

一个是指针在delete之后没有设置成null;另一个是manage c++中,没有delete unmanaged resource。

第一个bug是关于一个包含很多不同类型Element指针的list。创建list内容时,如果Element指针ptr不是null,new一个;在一个循环结束之后,会清空list(delete所有element)并创建新的list的内容。问题是delete之后不设置为null,就不会调用到new,因为ptr还指向一个被delete掉的内存。

第二个是unmanaged resouce中有db connection,在try中gcnew出来之后没有在finally中delete之。之后跑多用户的test中,.net架构中finalizer起一个单独的线程来调用对应析构函数;这样就把db connection占用了。不幸的是,我们的app架构限定一个用户只有一个;这个时候app中使用db connection时就会抛出一个exception(SQL服务器忙)。

之前有同事在处理同一个问题,注意到了这个exception却被误导了:一直在找可以使用多个connection的方案,却没有考虑是谁在长时间占用这个连接。被表现所迷惑...

 

以上2个例子都可以做pattern以防止以后出现类似的问题。

 

 

--------------------------------------------

2011/3/18 补充

最近碰到一个c++ bug,就是有个queue会崩溃。

后来发现是C++的一个structure,添加了一个成员,size增加了;但是queue里面有很多老的structure数据。一碰到这种old数据,新的code就蹦了。又见脏数据。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值