是否有某种方法可以在程序终止时检测文件句柄泄漏?
特别是我想确保所有创建的句柄都在代码中释放.
例如,我可能在某个地方有一个CreateFile(),在程序终止时,我想检测并确保所有这些都关闭.
如果可以的话(即如果它不是一个巨大的遗留代码库,你就是错误修正),你应该考虑使用RAII成语来包裹你的文件句柄.通过在构造函数中"获取"文件句柄并在析构函数中释放它,您可以确保在RAII超出范围时,您的文件句柄也可以很好地清理.
它与智能指针的原理相同,在您的工具箱中有一个非常有用的概念,可以避免C++中的这类问题.
我使用了windbg的!htrace命令.
!htrace -enable !htrace -snapshot !htrace -diff
允许您比较两个执行点的句柄情况,并帮助您找到已分配泄漏句柄的位置.
它对我很有用.