草庐IT

c++ - 正确使用 shared_ptr 消除跨 DLL 边界的释放

我正在阅读“Usingshared_ptrindll-interfaces”。在那篇文章中,phlipsy在他的回答结束时提出了一种方法,可以不跨DLL边界传递特定于实现的对象。基本上,这个想法是从DLL返回一个原始指针,并在带有该原始指针的EXE中初始化shared_ptr。我不认为这是正确的。为了简单起见,让我重新制作它的原型(prototype)。//wrongversion??//DLLObject*createObject(){returnnewObject;}//EXEstd::tr1::shared_ptrp(createObject());..当object被释放时,s

c++ - 如何获取对具有 shared_ptr 的对象的引用?

如何获取对具有shared_ptr的对象的引用到吗?(对于一个简单的类T) 最佳答案 operator*已经返回一个引用:T&ref=*ptr;或者,我想我可以举一个更有意义的例子:voiddoSomething(std::vector&v){v.push_back(3);}autop=std::make_shared>();//This:doSomething(*p);//Isjustasvalidasthis:vectorv;doSomething(v);(请注意,使用引用释放对象的引用当然是无效的。保留对对象的引用与保留sha

c++ - 单例模式 : different behavior of auto_ptr and unique_ptr

在实现工厂类时,我遇到了一个我无法理解的std::auto_ptr行为。我将问题简化为以下小程序,所以...让我们开始吧。考虑以下单例类:单例.h#ifndefSINGLETON_H_#defineSINGLETON_H_#include#includeclasssingleton{public:staticsingleton*get(){std::coutptr_;//staticstd::unique_ptrptr_;};#endif单例.cpp#includeostd::auto_ptrsingleton::ptr_(0);//std::unique_ptrsingleton::

C++如何从在构造函数上采用参数的类创建std::unique_ptr

我需要从一个类中创建一个std::unique_ptr,该类的构造函数采用一个参数。我找不到有关如何操作的引用资料。这是无法编译的代码示例:#include#include#include#includeclassMyClass{public:MyClass(std::stringname);virtual~MyClass();private:std::stringmyName;};MyClass::MyClass(std::stringname):myName(name){}MyClass::~MyClass(){}classOtherClass{public:OtherClass(

c++ - 返回 shared_ptr 时的引用计数

下面的代码是不是意味着当这个函数返回时,这个类里面的request对象仍然持有这个对象的引用?boost::shared_ptrRequestList::GetRequest(){boost::mutex::scoped_lock(listmtx);request=boost::shared_ptr(newRequest());returnrequest;}用过的:request=requests->GetRequest();//Refcountistwoonrequestobjectwhenitreturns??即使在完成上述分配后,我们在request上的引用计数仍然为2...其中

php - 将 IPV6 转换为 PTR 记录的半字节格式

我需要将ipv6地址转换为其半字节格式以用于动态创建ptr记录。这是我从维基百科得到的信息:IPv6reverseresolutionReverseDNSlookupsforIPv6addressesusethespecialdomainip6.arpa.AnIPv6addressappearsasanameinthisdomainasasequenceofnibblesinreverseorder,representedashexadecimaldigitsassubdomains.Forexample,thepointerdomainnamecorrespondingtotheIP

android - X 类不是抽象的,也没有实现 android.os.Parcelable 中定义的 fun writeToParcel()

在我的Android应用程序中,我想向我的Intent添加一个包含Place对象的Bundle,如下所述。由于serializable速度慢且不推荐,我更喜欢Parcelable。虽然我使用Kotlin1.3.31,但我在分割某些数据类时遇到了问题。示例:importandroid.os.Parcelableimportkotlinx.android.parcel.Parcelize@ParcelizedataclassPlace(valstreet:String,valpostal:String,valcity:String):ParcelableAndroidStudio提示:Cl

c++ - 我应该在我的类中的 std::vector 成员变量中使用 std::unique_ptr<T> 吗?

想象一个classC有一个成员变量m_MyList类型std::vector我想在其中存储MyClass类型的对象.C有两个函数可以在m_MyList中添加或删除对象.m_MyListC的消费者也应该可以访问因为他们需要阅读MyClass的合集对象。集合的外部读者将无法更改集合,因此MyClass对象仅由C拥有.现在我的问题是:在C++11风格中,vector中存储的最佳T是多少?可能性似乎是:std::vectorstd::vectorstd::vector>,使用std:move推unique_ptr进入vector 最佳答案

c++ - 为什么 boost::shared_ptr 中的引用计数器不是易变的?

在boost::shared_ptr析构函数,这是完成的:if(--*pn==0){boost::checked_delete(px);deletepn;}哪里pn是指向引用计数器的指针,类型定义为shared_ptr::count_type->detail::atomic_count->long我会期待long成为volatilelong,在shared_ptr中给定线程使用和非原子0-check-and-deletion|上面的析构函数。为什么它不是易变的?编辑:结果我查看了未指定多线程使用时使用的header(atomic_count.hpp)。在atomic_count_win

c++ - 不需要大量库的体面的 shared_ptr 实现?

我现在正在上GIS编程的C++编程类(class)。我真的开始为处理适当的内存管理而头疼。考虑到任何时候通常有8-10个类,每个类都包含一个指向3D矩阵或其他非常大的东西的指针。现在我们的类(class)已经提出了允许我们使用Boost的教授的问题,或者至少是2008年的C++功能包(对于TR1)。他拒绝了,但说如果我们愿意,我们可以找到添加一些第三方cpp/hpp文件。我已经尝试过让shared_ptr脱离boost,但这比它的值(value)更让人头疼。那么那里有任何免费的shared_ptr实现吗? 最佳答案 使用boost的