草庐IT

libgnuSTL_shared

全部标签

c++ - tr1::shared_ptr 和 boost::shared_ptr 的区别?

tr1::shared_ptr和boost::shared_ptr有什么区别吗?如果有,是什么? 最佳答案 不,boostshared_ptr的文档说:ThisimplementationconformstotheTR1specification,withtheonlyexceptionthatitresidesinnamespaceboostinsteadofstd::tr1. 关于c++-tr1::shared_ptr和boost::shared_ptr的区别?,我们在StackOv

windows - Access 2010 on shared server 编译麻烦

我有一个access2012应用程序,在我对面的同事尝试运行它之前,它工作得很好。我们共享一个服务器。我编译的时候,他跑不了。当他编译它时,角色被颠倒了。他可以运行它,但我不能。Access的版本是一样的。我在这里错过了什么? 最佳答案 确定故障系统首先,您应该在其他机器上测试每个编译后的版本,以确定您或您的同事中的哪一个可能是问题的根源。如果您已隔离出现问题的单个特定计算机,则完全卸载Office并重新安装它可能是一件好事;其他东西可能已损坏。共享数据库当您说共享服务器时,我希望您不是从共享网络文件夹运行Access数据库,而是将

php - 使用 SWIG 在 PHP 中包装 boost::shared_ptr

如果我使用SWIG包装这个C++函数:boost::shared_ptrClient::create(){returnboost::shared_ptr(newClient());}然后在PHP中调用它:$client=Client::create();echogettype($client);$client的类型是resource,不是object,所以我不能调用Client方法。包装此功能的选项有哪些?我正在为其他人的C++库创建一个PHP包装器,因此重新编写代码以不使用boost::shared_ptr并不是一个真正的选择。这是迄今为止我想出的唯一解决方案:MyClientCli

java - 线程 "main"java.awt.AWTError : BoxLayout can't be shared 中的异常

我在这段代码上遇到了这个错误:super("TraceMasker");setLayout(newBoxLayout(getContentPane(),BoxLayout.PAGE_AXIS));label1=newJLabel("Sourcedirectory:");label2=newJLabel("Targetdirectory:");label3=newJLabel("Defectnumber:");label4=newJLabel("Slicetokens:");label4.setToolTipText("Seperatemultipletokenswithcomma");

c++ - std::shared_ptr 什么时候释放它的对象?

我在使用GCC4.8.4的Ubuntu14.04上,我的代码类似于以下内容:std::shared_ptrmy_shared_object=setelsewhere...MyFunction(*my_shared_object);MyFunction的签名如下所示:voidMyFunction(constMyClass&my_object)可以找到完整的代码here但是,我发现my_object实际上超出了MyFunction上下文中的范围。我的想法是my_shared_object只有在超出范围后才会释放其内容,这意味着在MyFunction返回之后。我不确定我是否误解了std::s

c++ - 制作 shared_ptr 的拷贝时会发生什么?

我想了解当将shared_ptr分配给另一个时,shared_ptr中托管对象的引用计数会受到怎样的影响。我在C++primer,5thedition中看到以下声明:Forexample,thecounterassociatedwithashared_ptrisincrementedwhen...weuseitastheright-handoperandofanassignment...Thecounterisdecrementedwhenweassignanewvaluetotheshared_ptr...举个例子:autop=make_shared(42);//objecttowh

c++ - 分配给 shared_ptr,有没有办法做到这一点?

有没有办法首先用nullptr初始化shared_ptr并在一段时间后将指向类的指针赋值给它?//pseudocodestd::shared_ptrptr(nullptr);//andlaterptr->assign(newMyClass); 最佳答案 你在寻找ptr.reset(newMyClass)吗? 关于c++-分配给shared_ptr,有没有办法做到这一点?,我们在StackOverflow上找到一个类似的问题: https://stackover

c++ - Qt::make_shared 用于创建 QSharedPtr 和 std::make_shared 用于创建 std::shared_ptr

正如BjarneStroustrup的“C++之旅”中所述,作为一种已知的C++14实践,人们应该避免在代码中使用裸露的new和delete。标准库提供std::make_shared和std::make_unique用于创建智能指针以立即将分配的对象存储在其中。但是,不能将这些例程用于非标准智能指针,例如在Qt中。Qt有自己的内存管理模型(带父对象),但也提供智能指针类,如QSharedPointer和QPointer(尽管后者实际上不是拥有指针)。我的问题是:创建std::make_shared的Qt类似物不是很方便吗?像这样,创建QSharedPtr:namespaceQt{te

c++ - boost:初始化共享指针重置与 make_shared

除了生成代码的大小之外,使用reset()初始化函数make_shared()上的共享指针有什么区别?案例1使用reset()boost::shared_ptrpA;pA.reset(newA());案例2使用make_shared()boost::shared_ptrpA;pA=boost::make_shared();一般来说,使用reset而不是make_shared来减小可执行文件的大小是否是一个好习惯? 最佳答案 reset(newT(...))分配一个堆block,构造对象,为引用计数器分配一个新的堆block并初始化引

c++ - 为 std::shared_ptr 分配内存的正确方法

我已经实现了一个功能,在这个功能中,身份是交给我的,不受我的控制。它返回std::shared_ptr.在函数中,我分配了任意数量的内存,并通过shared_ptr返回对它的访问。我的内存分配是用newunsignedchar[123]完成的.问题是valgrind检测到新变体和删除变体的使用不匹配。当我使用new[](unsigned)为了分配内存,shared_ptr析构函数使用delete(void*)释放它,每当您使用“不正确”的分配器进行分配时,valgrind都会发出警告。更实际地说,我写了这个测试用例来说明我的意思:TEST(Example,Test1){unsigned