草庐IT

Shared_ptr

全部标签

c++ - shared_ptr 如何提供 noexcept 分配?

std::shared_ptr如何提供noexceptoperator=?当然,如果这个shared_ptr是最后一个,那么它必须销毁它的内容,并且不能保证那个对象的析构函数不会抛出,或者原来使用的自定义删除器不会扔。 最佳答案 对我来说似乎是个缺陷,虽然我在activeissueslist中找不到一个(虽然#2104类似)。根据[C++11:20.7.2.2.3/1],赋值定义为等价于shared_ptr(r).swap(*this);但根据[C++11:20.7.2.2.2],~shared_ptr本身不是noexcept。除非

c++ - std::make_shared 是否执行值初始化(GCC 和 clang 不同意)?

我的意思可以用下面的例子来解释:autop=std::make_shared();是int变量默认初始化(因此具有垃圾值)或值初始化(因此具有零值)?我已经在GCC5.2和clang3.6上进行了测试,前者进行值初始化,后者进行默认初始化。我想知道标准对此有何规定?在我看来,现代C++在这种情况下绝对应该执行值初始化。 最佳答案 是的。N379720.8.2.2.6AllocatesmemorysuitableforanobjectoftypeTandconstructsanobjectinthatmemoryviatheplace

c++ - 将 std::unique_ptr 推回 std::vector 时编译器不会失败

一个unique_ptr不能被推回std::vector因为它是不可复制的,除非使用std::move.但是,如果F是一个返回unique_ptr的函数,那么std::vector::push_back(F())操作是允许的.下面有一个例子:#include#include#includeclassA{public:intf(){return_f+10;}private:int_f=20;};std::unique_ptrcreate(){returnstd::unique_ptr(newA);}intmain(){std::unique_ptrp1(newA());std::vect

python - Boost.Python:如何公开 std::unique_ptr

我对boost.python还很陌生,并试图将函数的返回值公开给python。函数签名如下所示:std::unique_ptrsomeFunc(conststd::string&str)const;在python中调用函数时,出现如下错误:TypeError:Noto_python(by-value)converterfoundforC++type:std::unique_ptr>我在python中的函数调用如下所示:a=mymodule.MyClass()a.someFunc("somestringhere")#errorhere我试图公开std::unique_ptr但无法让它工作

python - libpython2.7.so.1.0 : cannot open shared object file: No such file or directory

我试图从终端运行python脚本但收到下一条错误消息:ImportError:libpython2.7.so.1.0:cannotopensharedobjectfile:Nosuchfileordirectory如果我运行printsys.version我会得到:>>>importsys>>>printsys.version2.7.3(default,Feb262013,16:27:39)[GCC4.4.620120305(RedHat4.4.6-4)]如果我运行ldd/usr/local/bin/python>>ldd/usr/local/bin/pythonlinux-vdso.

python - 了解 Python 中的多处理 : Shared Memory Management, 锁和队列

Multiprocessing是python中一个强大的工具,我想更深入地了解它。我想知道什么时候使用regularLocks和Queues以及何时使用多处理Manager在所有进程之间共享这些。我想出了以下测试场景,其中包含四种不同的多处理条件:使用池和NO经理使用池和管理器使用单独的流程和NO经理使用单独的流程和经理工作所有条件都执行一个作业函数the_job。the_job包含一些由锁保护的打印。此外,函数的输入只是简单地放入一个队列中(看是否可以从队列中恢复)。此输入只是在名为start_scenario的主脚本中创建的range(10)中的索引idx(显示在底部)。defth

java - libjvm.so : cannot open shared object file: No such file or directory

尝试使用此代码在我的14.10ubuntu上的R上安装rJava包if(!require(rJava))install.packages('rJava')在重新安装jdk后遇到了一些与java相关的错误,包括jni问题,并尝试再次运行相同的代码,得到了该错误Error:.onLoadfailedinloadNamespace()for'rJava',details:call:dyn.load(file,DLLpath=DLLpath,...)error:unabletoloadsharedobject'/usr/local/lib/R/site-library/rJava/libs/r

android - libz.so.1 : cannot open shared object file

我在ubuntu12.04上遇到了一个问题:/usr/lib/ndk/android-ndk-r8c/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/as:errorwhileloadingsharedlibraries:libz.so.1:cannotopensharedobjectfile:Nosuchfileordirectory我试过了sudoapt-geti

mongodb - mongod : error while loading shared libraries: libssl. so.10 libcrypto.so.10

问题我下载了mongodb3.0.7tar文件。然后我将bin目录添加到我的路径中:exportPATH=/bin:$PATH然后当我运行mongodb服务器时:mongod--fork--logpath"/home/me/mongolog"--dbpath"/home/me/data"我收到此错误:mongod:errorwhileloadingsharedlibraries:libssl.so.10:cannotopensharedobjectfile:Nosuchfileordirectory我做了什么我试过thissolution.简而言之,我更新了我的openssl:sudo

Android NDK STL c++_shared w/LIBCXX_FORCE_REBUILD 导致 std::stringstream NOP

tl;dr:问题是为了解释为什么std::stringstream“失败”,以及为什么它以它的方式失败(通过简单地做什么都没有),当链接到重建的c++_shared库时。一个最小的例子:std::stringstreamss;ss编译项目时使用APP_STL:=c++_sharedLIBCXX_FORCE_REBUILD:=true输出为Length:0。当使用APP_STL:=c++_static或LIBCXX_FORCE_REBUILD:=false时,stringstream按预期工作,Length:11作为输出。我正在使用STL的许多部分,到目前为止我看到的唯一明显的区别是这个