在函数返回值需要使用到强制类型转换时,最好使用指针,光使用引用不保险

来源:互联网 发布:大闹天宫化身6进7数据 编辑:程序博客网 时间:2024/06/09 20:55

这两天发现Android中java上层传递下来的ISurface,我在底层居然画不出图像,但是如果我在底层自己创建ISurface却是可以的...

这让我和我同事纠结无比,四处找原因...

 

由于这个现象很像是因为上层传递下来的ISurface并不是上层所管理的那一个...所以我把怀疑方向放在了接口传递参数的时候...当然了,现在看来我所遇到的这个问题并非接口传递参数导致的.

其中很多地方有返回sp<T>& 的函数调用,并且返回值又是一个强制类型转换的结果,所以我不得不细细研究了一下引用.

 

 

运行结果:

 

dd=20,dd:0xbf979850

tt=20,tt:0xbf979820 //这里地址就不一样了!

p=20,p:0xbf979820

 

 

果然证实了强制类型转换会产生临时变量的说法...但是传指针就不会有这样的问题,包括指针的引用也不会

 

传指针

 

 

运行结果:

dd=20,dd:0xbf9a3880

tt=20,tt:0xbf9a3880

p=20,p:0xbf9a3880

 

传指针的引用

 

 

运行结果:

dd=20,dd:0xbfa23100

tt=20,tt:0xbfa23100

p=20,p:0xbfa23100

 

 

 

 

 

 

 

原创粉丝点击