Я написал библиотеку C ++, которая предоставляется моему приложению VB.NET через оболочку C ++ / CLI.
Я беспокоюсь об объектах, которые я передаю приложению VB.NET через оболочку. Чтобы использовать классы в библиотеке, я написал для них оболочки, а классы-оболочки содержат указатели на неуправляемый экземпляр класса. В деструкторе класса-оболочки я удаляю память, на которую указывает неуправляемый указатель.
Если обернутая библиотека .NET передает один из этих экземпляров класса в приложение VB.NET, а приложение VB.NET использует его и перемещается (не сохраняет ссылку на него); соберется ли сборщик мусора .NET и избавится от этого экземпляра класса, что приведет к освобождению неуправляемой памяти в деструкторе класса? Это вызвало бы ошибку, если бы у меня была ссылка на ту же самую память, на которую указывал упакованный экземпляр класса.
Если это так, то я просто скопирую все данные в обертке, чтобы мои обертки не передавали какие-либо данные в собственную часть библиотеки. Если это не так, то нужно ли мне вызывать какой-либо метод dispose для экземпляра обернутого класса, чтобы уничтожить неуправляемый объект?