我有一个由umamaged代码使用的c#com类。我可以调试它,但我不知道什么时候发布了一个对象。如果已经在c ++中实现了descructur将被调用,在c#上它将被释放到GC。有没有办法追踪那一刻? 提前谢谢。
答案 0 :(得分:1)
维护非托管资源的托管类型应实现IDisposable接口。这告诉消费者你的代码需要在对象的实例上调用Dispose()
(如果可能的话,将它们包装在using
块中)。
IDisposable
的正确实现将在其终结器中释放本机资源,但客户端可以比确定性释放非托管资源更快地调用Dispose()
。无论哪种方式,您都可以避免泄漏,但最好尽快呼叫Dispose()
。
Here is an SO question详细说明了这一过程。