Форум: "Игры";
Текущий архив: 2004.08.22;
Скачать: [xml.tar.bz2];
ВнизFDirect3D._Release - какой правильный спосоп освобождения обьекта Найти похожие ветки
← →
MrAngel (2004-04-30 23:14) [0]FDirect3D : IDIRECT3D9;
Вот это работает.
if Assigned (FDirect3D) then
begin
//FDirect3D._Release;
FDirect3D := nil;
end;
Вот это работает но при выходе вылетает ошибка.
if Assigned (FDirect3D) then
begin
FDirect3D._Release;
FDirect3D := nil;
end;
Почему так??? Ведь FDirect3D := nil; не что иное как присваивание нулевого значения переменной, следовательно указатель в памяти безвозвратно теряется, а обьект не освобождается.
← →
cyborg © (2004-05-01 10:36) [1]Второе для Дельфи5 и ниже, первое для Дельфи 6 и выше.
← →
M&Ms (2004-05-02 01:08) [2]2cyborg
неправда! второе вообще не для делфи
Почему так??? Ведь FDirect3D := nil; не что иное как присваивание нулевого значения переменной, следовательно указатель в памяти безвозвратно теряется, а обьект не освобождается.
читай хелп по COM-обьектам... вообще в Делфи с их освобожедением можно вообще не париться -- _Release вызывается автоматически (а когда НИЛ присваиваешь -- принудительно)
← →
MrAngel (2004-05-02 16:15) [3]M&Ms ok ясно, значит это одна из особенностей COM.
← →
VMcL © (2004-05-02 18:29) [4]>>MrAngel (02.05.04 16:15) [3]
Это особенность конкретной среды программрования, а не COM. Компилятор Delphi автоматически вставляет вызов _Release(), а компилятор MSVC - нет, надо руками.
← →
MrAngel (2004-05-05 01:54) [5]Ясно thanks
Страницы: 1 вся ветка
Форум: "Игры";
Текущий архив: 2004.08.22;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.03 c