BCB5的vector实现Bug
在诊断BCB编译的Project代码的问题时,开启了CodeGuard。在调试过程中意外得到了下列错误信息:
  • Pointer arithmetic in freed memory
看代码,发现只是一个简单的push_back,实在是看不出来问题。断点位于BCB的vector.cc中,搜了一下,说是BCB5的一个Bug,在BCB5.5中已经修正。由于是Template代码的问题,所以是可以直接在源代码上打补丁的,如图所示:
其实有问题的代码不止这一处,总之就是已经delete了然而还在继续使用size()导致的。真是的,这种Bug也能有,Borland测试不仔细啊。