文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>C++ 智能指针的一篇调研

C++ 智能指针的一篇调研

时间:2010-11-09  来源:sld666666

 

Auto_ptr本来就是给局部变量用的,目的很单一。主要就是为了解决异常一旦出现函数立即退出,这样的问题。

auto_ptr不会降低程序的效率,理论上,合理使用容器加智能指针,C++可以完全避免内存泄露,效率只有微不足道的下降。

 

最主要的特点:拥有权的转移。

A:一个对象决不能被两个其指针“拥有”

Eg:

//int*ptr1 = new int;

std::auto_ptr<int>ptr1(newint);

std::auto_ptr<int>ptr2(newint);

ptr2 =ptr1;//ptr1 = null;

用着方便,和一般指针没多少两样,只要注意拥有权这个概念即可。

 

  1. auto_ptr不适用于数组,auto_ptr根本不可以大规模使用
  2. 作为函数参数传递的时候有危险性。

Eg: std::auto_ptr<int>ptr(new int)

        F1(ptr);

//now ptr = null,next will down

F2(ptr);

建议用const auto_ptr<int>& ?,此时意味着拥有权不能转移。

    3. 拥有权的转移。

     4. 如果不注意很容易被无用。

 

总结:

auto_ptr用法比较简单,但是有几个使用的误区。

效率上的损失,有的说不足1%,但是我没验证过,不敢确定.

用还是不用?aut_ptr能很好的解决其设计目的上的问题。但是我想如果不是新开发的项目,会造成某些接口调用不兼容的问题。

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载