草庐IT

c++ - 为什么 std::weak_ptr<> 不提供 bool 转换?

C++11的std::shared_ptr提供了一种bool运算符。operatorunspecified-bool-type()const;(由于bool类型的dangersfromimplicitcasting,它不是一个直接的operatorbool()const。)为什么std::weak_ptr没有类似的运算符?我发现自己经常打字if(!wp.expired())当我想打字时if(wp)为什么weak_ptr没有bool转换? 最佳答案 if(!wp.expired())在多线程代码中几乎总是错误检查,因为直接在if语句之

python - "weakly-referenced object no longer exists"是什么意思?

我正在运行Python代码并收到以下错误消息:Exceptionexceptions.ReferenceError:'weakly-referencedobjectnolongerexists'in>ignored有人知道这是什么意思吗?附:这是产生错误的代码:importsqliteclasscrawler:def__init__(self,dbname):tmp=sqlite.connect(dbname)self.con=tmp.cursor()def__del__(self):self.con.close()crawler=crawler('searchindex.db')

python - "weakly-referenced object no longer exists"是什么意思?

我正在运行Python代码并收到以下错误消息:Exceptionexceptions.ReferenceError:'weakly-referencedobjectnolongerexists'in>ignored有人知道这是什么意思吗?附:这是产生错误的代码:importsqliteclasscrawler:def__init__(self,dbname):tmp=sqlite.connect(dbname)self.con=tmp.cursor()def__del__(self):self.con.close()crawler=crawler('searchindex.db')

java - Android Asynctask : Use weak reference for context to avoid device rotate screen

在ApressProAndroid4作者说过:[...]contextofcurrentlyrunningactivitywillnolongerbevalidwhenthedeviceisrotated.[...]Oneapproachistouseaweakreferencetotheactivityinsteadofahardreference[...]但作者只是建议这样做,并没有说明它是如何完成的。有谁做过,请举个例子。 最佳答案 在你的AsyncTask的某个地方,你会想要传递你的Activity。然后,您将该引用保存在弱

java - Android Asynctask : Use weak reference for context to avoid device rotate screen

在ApressProAndroid4作者说过:[...]contextofcurrentlyrunningactivitywillnolongerbevalidwhenthedeviceisrotated.[...]Oneapproachistouseaweakreferencetotheactivityinsteadofahardreference[...]但作者只是建议这样做,并没有说明它是如何完成的。有谁做过,请举个例子。 最佳答案 在你的AsyncTask的某个地方,你会想要传递你的Activity。然后,您将该引用保存在弱

swift - 为什么关键字 "weak"只能应用于class和class-bound协议(protocol)类型

当我在Swift中将变量声明为weak时,我有时会从Xcode收到错误消息:'weak'mayonlybeappliedtoclassandclass-boundprotocoltypes或'weak'mustnotbeappliedtonon-class-bound'SomeProtocol';consideraddingaprotocolconformancethathasaclassbound我想知道为什么关键字weak只能应用于类和类绑定(bind)协议(protocol)类型?这个要求背后的原因是什么? 最佳答案 此错误的

c++ - 用于将 weak_ptr 应用于 unique_ptr 的内容

我试图理解c++11中的unique_ptr、shared_ptr和weak_ptr。我听说weak_ptr对于缓存和中断循环等事情会很好。我听说它们与shared_ptrs配合得很好。但是在这方面,shared_ptrs和unique_ptrs有什么区别呢?为什么weak_ptr只能与一个一起使用而不能与另一个一起使用?为什么我不想对其他人拥有的东西进行弱引用? 最佳答案 weak_ptr在技术上是一种卡在管理某些共享对象的一组shared_ptr的引用计数器上的方法。当最后一个shared_ptr被销毁时,对象被销毁,但只要有w

c++ - Boost weak_ptr在多线程程序中实现资源池

我正在考虑使用boost::weak_ptr来实现一个对象池,这样当没有人使用其中一个对象时,它们就会被回收。不过,我担心的是,它是一个多线程环境,而且似乎在指向超出范围的对象的最后一个shared_ptr与从weak_ptr构造的新shared_ptr之间存在竞争条件。通常,您会使用锁或其他东西来保护此类操作;然而,这里的重点是您不知道shared_ptr何时可能超出范围。我对boost::shared_ptr和boost::weak_ptr有什么误解吗?如果没有,有人对做什么有什么好的建议吗?谢谢。安德鲁 最佳答案 要使用wea

c++ - 如何将 boost::weak_ptr 转换为 boost::shared_ptr

我有一个shared_ptr和一个weak_ptrtypedefboost::weak_ptrclassnamePtr;typedefboost::shared_ptrxPtr;如何将weak_ptr转换为shared_ptrshared_ptr=weak_ptr;Xptr=classnameptr;????? 最佳答案 已经说过了boost::shared_ptrptr=weak_ptr.lock();如果你不想要异常或者只是使用强制转换构造函数boost::shared_ptrptr(weak_ptr);如果弱指针已经被删除,这

c++ - 为什么在锁定 weak_ptr 时会出现访问冲突?

我有一个std::weak_ptr。在尝试使用底层对象之前,我锁定它以获得shared_ptr:autofoo_sharedptr=foo_weakptr.lock();if(foo_sharedptr!=nullptr){//dostuffwithfoo}通常这很好用。但是,有时我在锁定调用期间遇到访问冲突:Unhandledexceptionat0x00007FF91F411BC3(My.dll)inMy.exe:0xC0000005:Accessviolationreadinglocation0xFFFFFFFFFFFFFFFF.我的猜测是底层指针被删除了,但是我对weak_pt