草庐IT

shared-project

全部标签

c++ - boost::shared_ptr 和分配派生类

假设DerivedClass派生自BaseClass以下是否可行?boost::shared_ptra(newBaseClass());boost::shared_ptrb(newDerivedClass());a=b;关注此question,我知道现在a指向派生,b指向基数(对吗?)此外,现在如果我通过a调用函数,它会调用派生实现吗? 最佳答案 ...a=b;您正在重新分配给a,因此a和b现在都指向DerivedClass对象。BaseClass对象将被销毁,因为此时它的引用计数将为零(由于a被重新分配以指向不同的对象)。由于a现

C++ 静态类和 shared_ptr 内存泄漏

我不明白为什么下面的代码会产生内存泄漏(我正在使用boost::shared_ptr和静态类实例)。有人可以帮助我吗?#include#includeusingboost::shared_ptr;#define_CRTDBG_MAP_ALLOC#defineNEWnew(_NORMAL_BLOCK,__FILE__,__LINE__)staticstructmyclass{staticshared_ptrptr;myclass(){ptr=shared_ptr(NEWint);}}myclass_instance;shared_ptrmyclass::ptr;intmain(){_Cr

c++ - 为什么 shared_ptr 有移动构造函数

在C++11中,std::shared_ptr具有移动构造函数和移动赋值运算符。是否有必要这样做的原因,即如果只有复制构造函数和赋值运算符,使用它的任何程序的行为是否会有所不同?它的唯一效果似乎是避免了引用计数器的额外递增和后期递减。 最佳答案 复制一个共享指针是非常昂贵的,因为内部引用计数需要以原子方式修改并使用正确的内存排序,这可能会导致总线锁和栅栏。(回想一下,多个线程可能已经复制了它们自己的、拥有同一对象的本地共享指针。)当您真正想要将所有权从一个对象转移到另一个对象时,这些都不是必需的,移动更胜一筹。

c++ - 使用 shared_ptr 在写时复制

所以我有一个简单的cow_ptr.它看起来像这样:template>structcow_ptr:privateBase{usingBase::operator*;usingBase::operator->;usingBase::operatorbool;//etccow_ptr(std::shared_ptrptr):Base(ptr){}//defaultedspecialmemberfunctionstemplatedecltype(auto)write(F&&f){if(!unique())self_clone();Assert(unique());returnstd::forw

c++ - shared_ptr 魔法 :)

Mr.LidströmandIhadanargument:)先生。Lidström的声明是一个构造shared_ptrp(newDerived);不要求Base具有虚拟析构函数:ArmenTsirunyan:"Really?Willtheshared_ptrcleanupcorrectly?Couldyoupleaseinthiscasedemonstratehowthateffectcouldbeimplemented?"DanielLidström:"Theshared_ptrusesitsowndestructortodeletetheConcreteinstance.Thisi

c++ - shared_array 的元素作为 shared_ptr?

如果我有一个boost::shared_array(或boost::shared_ptr),有没有办法获得boost::shared_ptr哪个与数组共享?例如,我可能想写:shared_arrayarray(newint[10]);shared_ptrelement=&array[2];我知道我不能使用&array[2],因为它只有类型int*,这对shared_ptr是危险的有一个将采用该类型的隐式构造函数。理想shared_array上面会有一个实例方法,比如:shared_ptrelement=array.shared_ptr_to(2);很遗憾,我找不到这样的东西。share

【R】Rstudio Project如何找回误删的代码

背景:今天不小心删掉了一个项目的批处理文件(batch_run.R),心脏乱跳了好一会儿……还好Rstudio有自动备份由于项目需要更新,于是把RPrpject点击copytofolder,不知道什么情况,导致archive里面没有文件了,之前的folder文件也丢失了刚好这个文件没有进行GitLabor本地git备份里面包含了好多步骤,自己重写可能要半天到一天时间;目的:如果IT没有提供类似SASserver恢复文件的功能,如何自己来找到遗失的文件;找回代码的步骤:1.进入Project的根目录,找到.Rproj.user/文件夹查看.Rproj.user隐藏文件image.pngRstud

c++ - shared_ptr 原子函数采用指针而不是引用的基本原理

如你所见here,shared_ptr作为指针而不是引用传递。还要注意Allthesefunctionsinvokeundefinedbehaviorifpisanullpointer.那么为什么是指针呢?我认为在C++中,应该优先使用引用,除非有特定的原因需要使用指针。 最佳答案 templateboolatomic_is_lock_free(conststd::shared_ptr*p);接受一个指向智能指针的指针,因为这是更通用的atomic_is_lock_free的特例:templateboolatomic_is_lock

c++ - 有没有办法更改现有 shared_ptr 实例的删除操作

我有一个函数,我希望在90%的时间内完成清理操作,但在10%的时间内我希望完成一些其他操作。有什么方法可以使用一些标准范围的控件,例如shared_ptr这样一开始它可以有一个删除操作,然后在函数中可以更改删除操作?shared_ptrptr(newT,std::mem_fun_ref(&T::deleteMe));ptr.pn.d=std::mem_fun_ref(&T::queueMe); 最佳答案 不是真的-shared_ptr的标准以这样的方式编写Deleter可以按值存储在控制节点(一个包含引用计数器、保存删除器、跟踪弱指

c++ - Visual Studio 速成版 2013 : How to create project with existing C++ source files ?

关于这个话题已经有很多讨论,但仍然没有具体的答案,或者至少我找不到它。我找不到选项File->New->Projectfromexistingfiles我已经有了源文件,为了利用visualstudioexpress中的一些工具,我安装了试用版2013,甚至在玩了一会儿并在互联网上寻找它之后,我也没有找到这个选项。在2013版本中,是否有任何可能的方法来使用现有源文件创建项目?还是我应该安装一些旧版本?建议/意见/解决方案..请 最佳答案 您可以尝试创建一个空白项目,然后将文件导入其中。不确定您使用的版本是否能够做到这一点。否则,创