首页 新闻 会员 周边 捐助

求解释着个语句什么意思

0
[已解决问题] 解决于 2015-05-24 22:16

#define RELEASE( x )if( x != NULL ) { x->Release(); x = NULL; }

 

还有这个

#define FREE(p) if( p ) { free(p); p=NULL; }

不灭的香烟的主页 不灭的香烟 | 菜鸟二级 | 园豆:208
提问于:2015-05-16 22:03
< >
分享
最佳答案
0

将对象判断为空的操作和释放对象的操作合并到一个宏里。两句的本质是一样的。

第一句判断x非空之后调用x的成员函数Release(),再将x指向的内容改为NULL。

第二句是调用C语言库函数中的free()函数将p指针所指向的数据释放掉,以使得这块内存可以被其他变量或对象使用。

奖励园豆:5
飞鸟_Asuka | 菜鸟二级 |园豆:393 | 2015-05-18 11:04

非常感谢您的指点~

我是从c#转学c++的 ,所以很多都不懂。

这里的 x 、p 是在哪定义的?换成其他的字母可以吗?

我在学习别人的源码,并没有找到这2个变量的定义。

不灭的香烟 | 园豆:208 (菜鸟二级) | 2015-05-19 10:50

@不灭的香烟: 这两个字母可以理解为函数的形式参数,具体使用的时候应使用具体变量的值去替代。但是要记住宏定义和函数并不是一回事。在宏定义中,这里的p,x等变量只是简单的字符替换。而在函数中还存在保存变量,传入参数和返回值等一系列过程。

飞鸟_Asuka | 园豆:393 (菜鸟二级) | 2015-05-19 20:54

@不灭的香烟: 另外这里使用宏定义而不是函数的原因是可以提高程序编译链接的效率

飞鸟_Asuka | 园豆:393 (菜鸟二级) | 2015-05-19 20:59
其他回答(1)
0

百度 预定义 宏命令

吴瑞祥 | 园豆:29449 (高人七级) | 2015-05-16 22:56
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册