【发布时间】:2011-09-27 20:22:02
【问题描述】:
我编写了一个 C++ 库,它通过 C++/CLI 包装器向我的 VB.NET 应用程序公开。
我担心通过包装器传送到 VB.NET 应用程序的对象。为了使用库中的类,我为它们编写了包装器,并且包装器类包含指向该类的非托管实例的指针。在包装类的析构函数中,我删除了非托管指针指向的内存。
如果包装的 .NET 库将这些类实例之一传递给 VB.NET 应用程序并且 VB.NET 应用程序使用它并继续前进(不保存对它的引用); .NET 垃圾收集器会出现并处理此类实例,从而导致在类的析构函数中释放非托管内存吗?如果我引用了包装类实例指向的同一内存,这将导致错误。
如果是这种情况,那么我将复制包装器中的所有数据,以确保我的包装器不会与库的本机部分共享任何数据。如果不是这种情况,那么我是否必须在包装的类实例上调用某种 dispose 方法才能破坏非托管对象?
【问题讨论】:
标签: .net c++-cli unmanaged managed