Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.01.2013, 07:29   #1
kangreon
Форумчанин
 
Аватар для kangreon
 
Регистрация: 03.04.2009
Сообщений: 305
По умолчанию Ошибка при освобождении памяти ICaptureGraphBuilder2

Здравствуйте. Столкнулся с проблемой освобождении памяти интерфейса ICaptureGraphBuilder2 из DirectShow. При попытке освободить память, возникает ошибка доступа к памяти (access violation).
Вот пример кода:
Код:
var
  pGraph: IGraphBuilder;
  pCapture: ICaptureGraphBuilder2;
begin
  CoInitialize(nil);

  CoCreateInstance(CLSID_FilterGraph, nil, CLSCTX_INPROC_SERVER,
    IID_IGraphBuilder, pGraph);
  CoCreateInstance(CLSID_CaptureGraphBuilder2, nil, CLSCTX_INPROC_SERVER,
    IID_ICaptureGraphBuilder2, pCapture);

  pCapture.SetFiltergraph(pGraph);

  if Assigned(pCapture) then
  begin
    pCapture._Release;
    pCapture := nil;  // Ошибка тут
  end;

  if Assigned(pGraph) then
  begin
    pGraph._Release;
    pGraph := nil;
  end;

  CoUninitialize;
end.
Пробовал в Delphi 7, XE3, Lazarus.

Как избавиться от этой проблемы? Поиски в интернете привели меня на уже несуществующую ссылку на один форум.

PS. При освобождении данного интерфейса в С++ (Visual Studio), проблем, вроде, не возникало.

Последний раз редактировалось kangreon; 18.01.2013 в 07:32.
kangreon вне форума Ответить с цитированием
Старый 18.01.2013, 09:06   #2
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

_Release - убрать
:= nil; - само все делает
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Старый 18.01.2013, 17:18   #3
kangreon
Форумчанин
 
Аватар для kangreon
 
Регистрация: 03.04.2009
Сообщений: 305
По умолчанию

Спасибо. Ошибка исчезла.
kangreon вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вызов деструктора класса при присвоении реализумому методу итерфейса "nil" при освобождении памяти DLL. LISTAT Общие вопросы Delphi 1 08.05.2012 11:05
Ошибка при очистке памяти alexey_kip Visual C++ 3 12.02.2012 11:55
При освобождении обьекта TThread, он вешает всю программу. При этом код Execute у TThread уж выполнился.. Человек_Борща Общие вопросы Delphi 23 30.11.2011 09:18
Ошибка доступа при выделении памяти в чужом процессе Neoteric Общие вопросы Delphi 21 06.12.2010 16:50
Ошибка доступа памяти, при работе с принятой строкой. Zeraim Работа с сетью в Delphi 11 26.01.2010 01:11