У меня есть COM-компонент, имеющий класс MyDataObject. Есть метод со следующей подписью:
HRESULT MyDataObject::GetData(long Format, VARIANT* retval)
Этот COM-объект используется в приложении .NET, и метод возвращает строку или байтовый массив в зависимости от значения формата. Возвращенное значение преобразуется в байт [] в .NET и используется.
Я подозреваю, что у этого метода есть утечка памяти, т. Е. Массив байтов, возвращаемый этим методом, должен быть как-то освобожден. Когда я отлаживаю приложение, я вижу вызов метода GetData (...), занимающий память при каждом вызове. Я не уверен, как освободить эту память. Могу ли я изменить ее на hGlobal, а затем вызвать ReleaseHGlobal (...) или есть другой способ?
ОБНОВЛЕНО
Да, я использую диспетчер задач, чтобы увидеть, сколько памяти используется образцом приложения. Когда я запускаю приложение, оно остается на 16 МБ, но как только я нажимаю кнопку тестирования, чтобы вызвать этот метод GetData (...) примерно в 850 раз, память начинает увеличиваться, и TaskManager показывает использование памяти приложением, увеличенное примерно на 25 МБ.