buffer = new char[64]; buffer = std::make_shared<char>(char[64]); ??? 你能否使用make_shared<>()为数组分配内存? 我可以这样做:buffer = std::make_shared<...
这是cppreference关于std::shared_ptr的实现说明部分的一段引用,其中提到有两个不同的指针(如加粗所示):一个可以由get()返回,另一个则保存在控制块中。 在典型的实现中,std::shared_ptr只保存了两个指针: 1. 存储的指针(由get()返回的指针) ...
我有一个库,它内部使用了Boost版本的shared_ptr,并仅暴露这些。对于我的应用程序,我希望尽可能使用std::shared_ptr。不幸的是,这两种类型之间没有直接的转换方式,因为引用计数是与实现相关的。 是否有办法使boost::shared_ptr和std::shared_pt...
我试图理解C++11中的新成语。 至少在使用shared_ptr时,使用new T()和make_shared<T>()有实质性的区别。 但是如果要将共享指针重置为指向某个新实例,应该怎么做呢?以前,我通常会使用reset(new T())成员。然而,这难道不会遇到与一开始没有...
我有一些函数需要使用std::shared_ptr作为参数,因此我被迫使用std::shared_ptr,但是我要传递给函数的对象并非动态分配。我该如何将对象包装在std::shared_ptr中,并使std::shared_ptr不调用其上的delete操作。
我有一个如下定义的函数:void foo(std::shared_ptr<X> x) { ... }; 如果我声明一个指向X的shared ptr:std::shared_ptr<X> sourcePtr(new X(...)); 我可以按照以下方式调用foo:foo(...
boost::shared_ptr能否释放存储的指针而不删除它? 我在文档中没有看到release函数的存在,FAQ中也解释了为什么它不提供release函数,类似于不能对不唯一的指针执行release操作。我的指针是唯一的。如何释放我的指针? 或者使用哪个boost智能指针类可以允许我释放指...
我一直在考虑使用共享指针,我知道如何自己实现它--但不想这样做,所以我尝试使用std::tr1::shared_ptr,并且有几个问题... 参考计数是如何实现的?它使用双向链表吗?(顺便说一下,我已经搜索过了,但我找不到可靠的信息。) 使用std::tr1::shared_ptr时有什么...
在C++11中,std::shared_ptr有四个构造函数可以传递类型为D的删除器对象d。这些构造函数的签名如下: template<class Y, class D> shared_ptr(Y * p, D d); template<class Y, class D, ...
C++11是否有与boost::intrusive_ptr相当的东西? 我的问题是,我在我的C++代码上有一个C-style接口。 接口的两侧都可以使用C ++,但出于兼容性原因,必须公开C接口。 我不能使用std :: shared_ptr ,因为我必须通过两个(或更多)智能指针来管理对象...