在VC里的话总要
LPDDS->Release();
LPDDS=NULL;
而在DELPHI的例程里别人是这么写的
LPDDS:=nil
直接指向空了。是不是会自动释放啊,要不然怎么在方法集中也找不到。
其实也能找到一个_Release()是不是,我一调用就死机啊。到底是不是?

解决方案 »

  1.   

    这是COM组件的一种基本技术:)
    根源也许来自更老的一些内存管理技术————引用计数。
    当一个对象采用了引用计数后,它可以知道有多少个变量在引用它,
    一旦它的引用计数为0,则它可以放心的释放自己占的内存。
    这种技术在经常性动态分配的对象中特别有用。DELPHI的STRING,
    DELPHI的COM组件,都实现了引用计数。DELPHI的接口类型,编译器支持它的引用计数
    LPDDS:=NIL;
    LPDDS引用的对象里面的引用计数则自动减一,由对象自己决定释放与否。这一点同C/C++中的指针不同,指针是相对纯粹一些的地址。我想你也知道,一个最基本的接口,IUNKOWN接口,要实现三个方法,
    除了查询接口,另外两个则是处理引用计数。一般情况下,是不需要你显式调用的。