草庐IT

weak_ptr

全部标签

c++ - 如何将 boost::shared_ptr 作为指向 Windows 线程函数的指针传递?

如何将boost::shared_ptr作为指向Windows线程函数的指针传递?假设以下代码:test::start(){...._beginthreadex(NULL,0,&test::threadRun,&shared_from_this(),0,&threadID);......}/*thisisastaticfunction*/UINT__stdcalltest::threadRun(LPVOIDlpParam){shared_ptrk=*static_cast*>(lpParam);...}我认为这段代码不正确,你的想法是什么?我该怎么做?编辑:我通过boost::weak

【C++】C++11——智能指针、内存泄漏、智能指针的使用和原理、RAII、auto_ptr、unique_ptr、shared_ptr、weak_ptr

文章目录C++117.智能指针7.1内存泄漏7.2智能指针的概念7.3智能指针的使用7.3.1auto_ptr7.3.2unique_ptr7.3.3shared_ptr7.3.4weak_ptrC++117.智能指针7.1内存泄漏  什么是内存泄漏:  内存泄漏指因为疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并不是指内存在物理上的消失,而是应用程序分配某段内存后,因为设计错误,失去了对该段内存的控制,因而造成了内存的浪费。  内存泄漏通常由于程序在设计上的缺陷或错误,例如动态分配内存后,未在合适的时间或无法正确释放该段内存,而导致的。内存泄漏通常需要程序员通过分析程序源代码

c++ - ConnectNamedPipe 和 asio overlapped ptr

我命名了使用boostasio编写的管道服务器。服务器创建命名管道并调用ConnectNamedPipe将asiooverlappedptr传递给它。问题是传递给重叠的asio的完成处理程序从未被调用,即在客户端调用CreateFile不会触发传递给ConnectNamedPipe的完成处理程序。我做错了什么?这里是客户端和服务器的完整列表:#define_WIN32_WINNT0x0501#include#include#include#include#include#include#include#include#includestaticconstuint32_tPIPE_OUT

windows - MS.Internal.XcpImports.MethodEx(IntPtr ptr, String name, CValue[] cvData

我收到错误消息“值不在预期范围内”。堆栈跟踪在下面给出。请帮忙...atMS.Internal.XcpImports.MethodEx(IntPtrptr,Stringname,CValue[]cvData)atMS.Internal.XcpImports.MethodPack(IntPtrobjectPtr,StringmethodName,Object[]rawData)atMS.Internal.XcpImports.UIElement_TransformToVisual(UIElementelement,UIElementvisual)atMicrosoft.Phone.Con

windows - DWORD_PTR、INT_PTR、LONG_PTR、UINT_PTR、ULONG_PTR 何时、如何以及为什么?

我发现Windows有一些新的WindowsDataTypesDWORD_PTR,INT_PTR,LONG_PTR,UINT_PTR,ULONG_PTR你能告诉我何时、如何以及为什么使用它们吗? 最佳答案 *_PTR类型被添加到WindowsAPI以支持Win64的64位寻址。由于32位API通常使用DWORD等数据类型传递指针,因此有必要为64位兼容性创建新类型以替代32位应用程序中的DWORD,但是在64位应用程序中使用时扩展到64位。因此,例如,想要编写32位或64位代码的应用程序开发人员将windows32位APISetWi

c++ - 我应该使用 shared_ptr 还是返回 unique_ptr.get()?

我有一个带有指向MySQL连接的指针的类。只有这个指针和连接保持不变才有意义。但是,其他类需要连接,因此处理此问题的一种方法是让类成为classA{std::unique_ptrconn;public:constsql::Connection*getConnection();}或者它的变体(比如在conn声明的不同地方返回一个引用或者添加const。getConnection的实现是喜欢constsql::Connection*A::getConnection(){returnconn.get();}我正在徘徊,但是我是否应该使用std::shared_ptr并返回指针的拷贝。在哪种情

unique_ptr和可呼叫的对象释放其对象

在这里,我有简单的程序:structA{intt=0;operator()(int*p){coutu(newint[9]{0});}return0;}该程序在int阵列上创建一个唯一的_ptr。并使用可呼叫对象a破坏指针。一切都很简单。但是当我运行程序时,输出为:~Aoperator()(int*p)~A我不明白为什么驱动器两次打电话。如果有一些想法?看答案unique_ptr通过功能获取deleter对象的副本以保留状态,以获取更多信息。https://stackoverflow.com/a/35318283/4669663这是我试图确认的代码,当创建unique_ptr时,为eleter调

objective-c - 为什么我们在iOS测试时指定 "weak"?

我注意到使用Sencha测试在XCode中测试ViewController的推荐方法是通过实例化它@property(nonatomic,readwrite,weak)MyMainViewController*mainViewController;为什么不只是@property(nonatomic,strong)MyMainViewController*mainViewController;? 最佳答案 readwrite不是绝对必要的,因为它是默认设置。至于强与弱,使用弱的主要原因是避免引用循环(即两个对象彼此有强引用,因此它们永

ios - 为什么带有 __weak 限定符的变量会保留一个对象?

这是我的代码:externvoid_objc_autoreleasePoolPrint();intmain(intargc,constchar*argv[]){NSArray__weak*tmp=nil;@autoreleasepool{NSArray__strong*obj=[[NSArrayalloc]init];NSLog(@"obj&:%p",obj);tmp=obj;NSLog(@"tmp&:%p",tmp);_objc_autoreleasePoolPrint();}NSLog(@"tmp:%@",tmp);//whynot(null)?return0;}和控制台输出:20

ios - block block block ,用 __weak self

我想弄清楚我这样做是否正确:如果我有一个block,我会这样做:__weakMyClass*weakSelf=self;[selfperformBlock:^{//但是如果一个block中有一个block会发生什么?这是正确的吗?__weakMyClass*weakSelf=self;[selfperformBlock:^{[weakSelfdoSomething];[selfperformBlock:^{[weakSelfdoSomething];}afterDelay:1.0f];}afterDelay:delay];另外,在下面的函数中,是否需要使用[blockcopy]?-(v