about memory leak

1.发生memory leak首先想到的是使用vld工具来进行辅助调试,可以很快的查找到未正确释放的资源。

2.但并不是所有的leak均能够查找到,也许有些线程已经被你terminate掉了,这时就无法找到具体的堆栈信息。这是我们就需要将code中的所有terminate thread 屏蔽,重新来调试,找到异常的堆栈,这是可能是由于某个lock导致thread不能快速的exit,查找具体原因。所以terminate thread使用非常危险,还有可能在调用系统带lock的api是执行了,这就会导致程序无法正常运行,发生死锁。切记切记。。。在waitforsingleobject要使用INFINITE, 不要设置某段时间超时发生,在未来的某一刻必然会导致crash。

3.对于lock的使用最好封装好接口,避免在不同的地方肆意的使用,对于调试来说会相当繁琐。最好使用autolock,自动完成lock的释放。

猜你喜欢

转载自blog.csdn.net/cys861214/article/details/73928003
今日推荐