草庐IT

scope_guard

全部标签

c++ - C++ 11 中 boost::scoped_ptr 的替代方案

我们刚刚将编译器升级到支持C++11的VC++2013。之前我们一直在使用来自Boost的shared_ptr和scoped_ptr类,但由于这是我们一直在使用的Boost类,我们正在寻找删除该依赖项。据我所知,std::shared_ptrs是boost::shared_ptrs的直接替代品,所以这(希望)很容易。但是,Boostscoped_ptrs的最佳替代品是什么(如果有的话)?会是unique_ptr吗?(老实说,虽然我写了代码,但那是大约10年前的事了,我已经忘记了使用scoped_ptrs的目的是什么......也许我只是在“玩”Boost,但到目前为止正如我所看到的,在

c++ - 返回时复制操作是在 lock_guard 析构函数之前还是之后执行的?

这个问题在这里已经有了答案:C++returnvaluecreatedbeforeorafterautovardestruction?(2个答案)inC++whichhappensfirst,thecopyofareturnobjectorlocalobject'sdestructors?[duplicate](4个答案)关闭4年前。get_a()函数对于竞争条件是否安全,或者我是否需要像在get_b()中那样显式复制str_以便按顺序有一个线程安全的功能?classClass{public:autoget_a()->std::string{auto&&guard=std::lock_

c++ - 如何使用 lock_guard 和 try_lock_for

我可以使用boost::lock_guard获取boost::mutex对象上的锁,并且此机制将确定一旦boost::lock_guard超出范围将释放锁:{boost::lock_guardlock(a_mutex);//Dothework}在这种情况下,无论代码块是否因异常退出,a_mutex都会被释放。另一方面,boost::timed_mutex也支持方法try_lock_for(period),例如if(a_timed_mutex.try_lock_for(boost::chrono::seconds(1))){//Dotheworka_timed_mutex.unlock(

c++ - scoped_ptr 所有权

这个问题在这里已经有了答案:关闭9年前。PossibleDuplicate:WhatisasmartpointerandwhenshouldIuseone?我正在阅读anarticle我找到了一个小例子来演示boost::scoped_ptr的使用:#include#include#include#includestaticintcount=0;classprinter{intm_id;public:printer(void):m_id(count++){}~printer(void){std::coutp1(newprinter);boost::scoped_ptrp2(newpri

c++ - 为什么不包括 guard 或编译指示一旦工作?

我正在编译一些代码,这些代码依赖于includeguards来防止对象和函数的多个定义,但是VisualStudio2008给我的链接错误是有多个定义。我不明白为什么,因为我以前使用过与此非常相似的代码并且没有引起问题。我一定是在做一些愚蠢的事情,但我不知道那是什么。我还尝试删除包含保护程序并使用一次#pragma,但我遇到了相同的链接错误。我应该检查什么? 最佳答案 如果它们是链接器错误,最可能的原因可能是header中定义的非内联函数。如果您在包含在多个源文件中的header中有一个非内联函数,它将在每个源文件(“翻译单元”)中

C++:可以在构造函数中初始化 boost::scoped_ptr 吗?

boost::scoped_ptr类型的类成员可以在类的构造函数中初始化吗?怎么样?(不在初始化列表中) 最佳答案 是的。你可以使用reset()成员函数。classfoo{public:foo(){p.reset(newbar());}private:boost::scoped_ptrp;}; 关于C++:可以在构造函数中初始化boost::scoped_ptr吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverf

c++ - 错误 : '_hypot' was not declared in this scope

我正在尝试使用GCC和makefile在Windows上编译一个c++程序。我收到以下错误c:\mingw\include\math.h:Infunction'floathypotf(float,float)':c:\mingw\include\math.h:635:30:error:'_hypot'wasnotdeclaredinthisscope{return(float)(_hypot(x,y));}我读到任何包含在GCC上的文件都需要-lm链接器标志。所以我已经将它添加到我的makefile中,但它并没有解决问题......这是我的生成文件CC:=g++CFLAGS:=-std

iphone - 启用 Guard Malloc 时 UIImagePNGRepresentation 中的 EXC_BAD_ACCESS 错误

当启用GuardMalloc时,我在UIImagePNGRepresentation()处收到EXC_BAD_ACCESS错误,当我禁用时,我在转换图像时没有收到任何错误。我已经通过谷歌寻求解决方案,但我没有找到任何可行的解决方案。下面是代码。UIImage*image,*newImage;NSData*imageData=[NSDatadataWithContentsOfFile:@"somepath"];image=[UIImageimageWithData:imageData];NSData*data=nil;data=UIImagePNGRepresentation(image

iOS 错误 : Heap corruption detected, free list is damaged and Incorrect guard value: 0

GFF_MJ(3248,0x103f9ab80)malloc:Heapcorruptiondetected,freelistisdamagedat0x28298ffa0***Incorrectguardvalue:0GFF_MJ(3248,0x103f9ab80)malloc:***setabreakpointinmalloc_error_breaktodebug错误截图:运行一段时间后,应用程序总是崩溃,但除了上述提示外,我不会得到任何信息。现在不知道怎么解决,谁能帮帮我?谢谢。 最佳答案 这些错误一点都不有趣。最有可能的是,您在

tcp - 错误 : ‘TCP_NODELAY’ was not declared in this scope

我正在尝试在Ubuntu16.04中编译ChatSciptv7.55。但是当我使用makeserver命令时,我得到了这个错误:evserver.cpp:Infunction‘intsettcpnodelay(int)’:evserver.cpp:263:40:error:‘TCP_NODELAY’wasnotdeclaredinthisscopereturnsetsockopt(fd,IPPROTO_TCP,TCP_NODELAY,(void*)&on,sizeof(on));^Makefile:110:recipefortarget'evserver.o'failedmake:**