55得票3回答
shared_ptr 跨 dynamic_cast 是否可行?

我有两个类 A 和 B,B 继承自 A。 如果我有一个 shared_ptr<A> 对象,我知道它实际上是 B 子类型,我该如何执行动态转换以访问 B 的 API(考虑到我的对象是 shared_ptr,而不仅仅是 A)?

55得票4回答
在std::shared_ptr中检查空值

我在想,在使用sp之前是否需要检查它是否为null。如果我说错了,请纠正我,但创建别名不会增加引用计数器,因此进入方法时我们正在使用一个共享指针,我们不知道嵌入指针是否已被重置.. 我正确地假设了吗?Class::MyFunction(std::shared_ptr<foo> &a...

54得票17回答
你们在typedef shared_ptr时遵循什么约定?

我在为boost::shared_ptr模板进行typedef的命名约定方面犹豫不决。例如:typedef boost::shared_ptr<Foo> FooPtr; 在制定规则之前,我想了解其他人使用的约定是什么?你们使用的约定是什么? 编辑: 对于那些将typedef嵌套在F...

54得票4回答
我应该使用shared_ptr还是unique_ptr?

我正在使用pimpl方法创建一些对象,但我不确定是否应该使用std::shared_ptr还是std::unique_ptr。 我知道std::unique_ptr更高效,但对我来说这并不是很重要,因为这些对象本身就比较庞大,所以std::shared_ptr相对于std::unique_p...

53得票5回答
如何将deleter传递给make_shared函数?

自从C++11以来,由于多种原因,开发者倾向于使用智能指针类来管理动态分配的对象的生命周期。随着这些新的智能指针类的出现,标准甚至建议不要使用像new这样的运算符,而是建议使用make_shared或make_unique来避免一些容易出错的问题。如果我们想使用一个智能指针类,比如shared...

52得票7回答
shared_ptr:速度慢得可怕

在比较指针的两种变体——传统指针和shared_ptr时,我惊讶地发现程序的运行速度显著增加了。测试使用了2D Delaunay递增插入算法。 编译器设置: VS 2010(发布版)/O2 /MD /GL,W7 Prof,CPU 3.GHZ双核 结果: shared_ptr(C++...

51得票3回答
使用shared_ptr处理private_key时出现分段错误

更新 [X] 我发现当 TLS::credentials creds 在全局范围内声明时,会发生这种情况,但如果我将其声明在外面则不会出现段错误。 我需要它是全局的,因为它有助于缓存证书,并且多个线程可以使用其他线程创建的证书,而不必花费时间创建新证书。 [X] 我进一步将代码从大约200行...

51得票5回答
使用make_shared创建shared_ptr有什么缺点吗?

使用make_shared<T>()与使用shared_ptr<T>(new T)相比,是否有任何不利之处? Boost文档指出: 用户一再要求提供一个工厂函数,该函数创建给定类型的对象并返回其shared_ptr。除了方便和风格外,这样的函数还是异常安全的,并且...

51得票2回答
从技术角度来看,为什么不能在构造函数中使用 shared_from_this?

在《C++标准库》的第91页中,我读到了有关shared_from_this()的内容: 问题在于,shared_ptr将自己存储在Person基类的私有成员enable_shared_from_this<>中,在 Person 构造函数结束时。 书中相关的代码片段如下...

49得票13回答
使用boost::shared_ptr时可能存在哪些潜在危险?

在使用 boost::shared_ptr 时,你可能会犯哪些错误呢?换句话说,我在使用 boost::shared_ptr 时需要避免哪些陷阱呢?