c++ 智能指针作为编程标准的使用?

栏目: C++ · 发布时间: 7年前

内容简介:越来越多的我听说,我应该使用智能指针而不是裸指针,尽管我有有效的内存泄漏系统实现.请问使用智能指针的正确编程方法是什么?是否应该使用它,即使我检查分配的内存块上的内存泄漏?还是由我决定的如果我不使用它们,这可以被认为是编程弱点吗?如果强烈推荐使用智能指针(例如:std :: auto_ptr),我应该使用它们而不是每个裸指针吗?

越来越多的我听说,我应该使用智能指针而不是裸指针,尽管我有有效的内存泄漏系统实现.

请问使用智能指针的正确编程方法是什么?是否应该使用它,即使我检查分配的内存块上的内存泄漏?还是由我决定的如果我不使用它们,这可以被认为是编程弱点吗?

如果强烈推荐使用智能指针(例如:std :: auto_ptr),我应该使用它们而不是每个裸指针吗?

您应该使用RAII处理所有资源分配.

智能指针只是该规则的一个常见特殊情况.

而智能指针不仅仅是shared_ptr.有不同的所有权语义的不同智能指针.使用适合您需要的产品. (主要的是scoped_ptr,shared_ptr,weak_ptr和auto_ptr / unique_ptr(更喜欢后者,如果可用)根据您的编译器,它们可能在标准库中可用,作为TR1的一部分,或者根本不在这种情况下可以通过Boost库获得它们.

是的,你应该绝对使用这些.它花费你什么(如果正确地,你失去了零性能),并且它获得了很多(内存和其他资源被自动释放,你不必记得手动处理,你的代码使用资源获取更短更简洁)

请注意,并不是每个指针使用都代表某种资源所有权,因此并不是所有的原始指针使用都是错误的.如果你只需要指向别人所拥有的对象,那么一个原始的指针是完全合适的.但是,如果您拥有对象,那么您应该对其进行适当的所有权,无论是通过将类本身RAII语义,还是将其包装在智能指针中.

http://stackoverflow.com/questions/6142142/usage-of-smart-pointers-as-a-programming-standard


以上所述就是小编给大家介绍的《c++ 智能指针作为编程标准的使用?》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

增长黑客实战

增长黑客实战

范冰、张溪梦 / 电子工业出版社 / 2017-6 / 59.00

《增长黑客实战》围绕硅谷前沿的增长黑客职业,讲解增长理念的树立、增长团队的组建、流程制度的创立、技术营销的运用等团队运营成功实战经验。作者以自身创业经验为蓝本,结合真实案例,并融入一些伟大创业者的智慧,创建了一套思考、验证和追求卓越增长的理论体系。那些想要验证自己的创意、解决实际增长问题和拥有成功事业的人,可以将《增长黑客实战》当成一套清晰的实践指南、一幅组建增长团队的指导蓝图,或者一套值得反复玩......一起来看看 《增长黑客实战》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

html转js在线工具
html转js在线工具

html转js在线工具