遇到一个很头疼的内存泄露的问题,调试的大半天才发现的,指针指向的对象1被delete了两次,而在VS2005中,debug中断的位置不是这个被多次delete的对象1,而是另外一个对象2,在释放它的时候,提示访问了未知的堆栈。
虽然没有在内存中仔细进行调试,不过可以揣测出问题原因是,在多次释放对象1的时候,释放掉了对象2的资源,导致在释放对象2的资源的时候,访问未知的堆内存异常,而对象2在代码中new和delete的代码是没有问题的,所以得找出对象1的异常,而在编译器中没有提示,这个问题就隐藏得比较深。
如何避免这样内存泄露问题再次出现呢
1.规范代码的编写,涉及到指针操作一定要小心再小心,不要遗漏问题。
2.时常进行迭代测试,防止问题累计,这样就可以在修改或者增加了新代码的地方进行重点的调试,而刚才出现的这个问题,也只能通过检查代码来找出问题的所在。