游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1784|回复: 4

com接口怎么检查有没release~~

[复制链接]

3

主题

7

帖子

15

积分

新手上路

Rank: 1

积分
15
发表于 2009-8-11 21:19:00 | 显示全部楼层 |阅读模式
RTRT...发现好多内存泄露.. new之类的 都改好了

就是com接口的 感觉都有release 但是就是改了 没什么作用.....

请问有什么插件可以查看 哪些没release发生内存泄露的吗?

0

主题

10

帖子

14

积分

新手上路

Rank: 1

积分
14
发表于 2009-8-12 16:09:00 | 显示全部楼层

Re:com接口怎么检查有没release~~

如果是D3D组件的话你可以在DEBUG模式下连接d3dx9d.dll,这样调试方式运行的话退出后会在输出窗口告诉你有d3d对象没有被释放,但是不能告诉你哪个对象没有释放。

3

主题

7

帖子

15

积分

新手上路

Rank: 1

积分
15
 楼主| 发表于 2009-8-15 18:50:00 | 显示全部楼层

Re:com接口怎么检查有没release~~

这个我知道啊 我现在就是想知道 到底是哪没被释放

0

主题

10

帖子

14

积分

新手上路

Rank: 1

积分
14
发表于 2009-8-15 22:41:00 | 显示全部楼层

Re:com接口怎么检查有没release~~

那你只能自己检查检查了。有一个准则,就是只要是请求得到接口对象的库函数,就是有类似于"IXXX**"类型参数的(IXXX是一个com接口),那么用这个函数得到的IXXX的对象肯定是最后要release的。比如:
pTex是一个已创建的IDirect3DTexture对象,
IDirect3DSurface9* pSurf = NULL:
pTex->GetSurfaceLevel( 0, &pSurf );
那么用完pSurf后必定是要release的。
而如果是new的空间没有delete,可以用crtdbg侦测。

362

主题

3023

帖子

3553

积分

论坛元老

Rank: 8Rank: 8

积分
3553
发表于 2009-8-16 21:16:00 | 显示全部楼层

Re:com接口怎么检查有没release~~

写一个简单的COM智能指针
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-21 08:52

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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