游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1682|回复: 3

求助:关于AddRef()

[复制链接]

65

主题

518

帖子

521

积分

高级会员

Rank: 4

积分
521
发表于 2004-11-27 13:53:00 | 显示全部楼层 |阅读模式
AddRef()是做什么用的?帮助里说它好象是对某一种类在程序中拥有的对象的个数的计数器.
我不大理解这是什么意思,请帮我解释以下,最好举例说明. 谢谢!!

6

主题

76

帖子

83

积分

注册会员

Rank: 2

积分
83
发表于 2004-11-27 15:32:00 | 显示全部楼层

Re:求助:关于AddRef()

是IUnknown接口中的一个方法,在com中是不用自己delete接口的,它用的是引用计数的方法,也就是说,当一个接口的对象被引用一次时,就用AddRef把内部的计数器加一,如果我们不用这个对象了,就要用Release把这个计数减1,当这个计数为0时,com就会把这个对象删除
伪代码如下:
AddRef()
{
   ++count;
}
Release()
{
     --count;
    if ( count == 0 )
         delete ;
}

所以在DirectX中,我们用完一个接口,都要对它进行Release,不然会内存泄漏

这是我的理解,我没系统学习过com,所以说得也不是很清楚,见谅

2

主题

21

帖子

21

积分

注册会员

Rank: 2

积分
21
发表于 2004-11-27 19:51:00 | 显示全部楼层

Re:求助:关于AddRef()

用delphi你就不用管这么多了,连release都省了

65

主题

518

帖子

521

积分

高级会员

Rank: 4

积分
521
 楼主| 发表于 2004-11-28 00:53:00 | 显示全部楼层

Re: 求助:关于AddRef()

谢谢!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-23 11:53

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表