我在做一个可视组件,它里面包含有几个继承自IUnknown的接口变量。
测试时,如果程序只加入一个该组件,则不有错;否则将在程序关闭时出错。
因为我知道:
由IUnknown继承的接口变量在作为局部变量时会在函数结束时会自动释放。
如以下程序:
function TestProc: HRESULT;
var
lpDD : IDirectDraw;
begin
Result := DirectDrawCreate(nil, lpDD, nil);
if Result<>0 then raise Exception.Create('Failed create!');
Result := lpDD.QueryInterface(IID_IDirectDraw2, MyDirectDraw); lpDD._Release; // 这一行代码是多余的,将导致出错
end;
所以我没加入任何释放代码。
请问一下到底是不是还要加入释放代码?
或者是IUnknown的其它问题,请指教,多谢!!!.
我搞得头都大了:(
测试时,如果程序只加入一个该组件,则不有错;否则将在程序关闭时出错。
因为我知道:
由IUnknown继承的接口变量在作为局部变量时会在函数结束时会自动释放。
如以下程序:
function TestProc: HRESULT;
var
lpDD : IDirectDraw;
begin
Result := DirectDrawCreate(nil, lpDD, nil);
if Result<>0 then raise Exception.Create('Failed create!');
Result := lpDD.QueryInterface(IID_IDirectDraw2, MyDirectDraw); lpDD._Release; // 这一行代码是多余的,将导致出错
end;
所以我没加入任何释放代码。
请问一下到底是不是还要加入释放代码?
或者是IUnknown的其它问题,请指教,多谢!!!.
我搞得头都大了:(
解决方案 »
- 按钮中事件!很简单,很简单,很急!
- 打包问题 帮帮忙。。。。。解决就给分 在线。。。InstallShield Express5
- ConnectionOpen对象的Schema方法如何使用?(在线待)
- 可怜中国程序员
- 在线求教:我做一个串口软件,运行时出现一个“Range Check Error"的提示,请问是什么意思?该如何解决。高分求教!!!!
- 怎样去掉MP2声音文件一头一尾空白无声的地方呢?
- 如何在memo中把光标设定到指定位置?这么简单的问题
- 求一个Delphi Xe2 三层数据库应用的源码例子
- 谁能给我讲解一下构造formcreate函数?
- Delphi查找多个数据库内容在同一页面显示,应该怎么办?
- 问一个关于commandtext的超简单问题?
- 如何通过扫描ip,把是代理服务器的ip列出来
Delphi已经自动为我们做了,这就是我喜欢Delphi的很重要的一点