c – 解除引用std :: tr1:shared_ptr与取消引用裸指针的任何命
发布时间:2020-12-16 10:19:06 所属栏目:百科 来源:网络整理
导读:我意识到创建,分配,复制和销毁std :: tr1 :: shared_ptr或boost :: shared_ptr(由于引用计数机制)会产生(有时很重要)性能损失.是否正确,一旦构造,访问由shared_ptr包装的指针没有性能损失? 换句话说:给定 std::tr1::shared_ptrmyClass SharedA(new myClass
我意识到创建,分配,复制和销毁std :: tr1 :: shared_ptr或boost :: shared_ptr(由于引用计数机制)会产生(有时很重要)性能损失.是否正确,一旦构造,访问由shared_ptr包装的指针没有性能损失?
换句话说:给定 std::tr1::shared_ptr<myClass> SharedA(new myClass); myClass *NakedA = new myClass; 不 SharedA->someClassMember 有相同的开销 NakedA->someClassMember ? 解决方法
在没有调试支持的优化构建中,不应该有任何开销.您可以通过查看您正在使用的实现来了解.机会是,它的操作符 – > overload只返回指向指向对象的指针,它的operator * overload只是取消引用这个指针.
(这就是std :: shared_ptr的Visual C 2010实现:每个重载的运算符只调用一个只返回指针的“get”函数;没有任何类型的锁定或其他开销.其他实现可能不同.) 未优化的构建可能不会内联运算符重载,如果您的实现具有您启用的额外调试支持,它可能会执行额外的检查(例如,如果您取消引用空指针,则可能是断言). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |