草庐IT

shared-project

全部标签

c++ - 在 C 接口(interface)中使用 shared_ptr?

我有一个要移植到C++的C库,它大量使用手动引用计数结构。我考虑过使用shared_ptr来自动处理引用计数,但我还想维护CAPI。旧签名看起来像这样:Object*object_create(void);Object*object_retain(Object*o);voidobject_release(Object*o);如果我使用shared_ptr,有什么方法可以有效地在CAPI中公开此手动引用计数? 最佳答案 shared_ptr的问题,正如您已经发现的那样,您不能修改引用计数,除非通过构造或销毁实例。所以不,除了为每个构造

git报错The project you were looking for could not be found 解决方式

问题描述:使用git从远程仓库克隆项目到本地的时候。gitclonehttp://gitlab.com/project/xxxx.git出现这个问题:Theprojectyouwerelookingforcouldnotbefound.原因分析:你的账号没有项目的权限,你可以在浏览器输入你的项目地址,如果可以进入,则说明有权限;若不能进入,说明你没有该项目的权限。你电脑的git自动保存了其他的用户名密码信息,与当前项目的用户名密码与之前的发生冲突。解决方案:1、一次性克隆的时候远程地址带上用户名及密码即可解决gitclonehttp://username:password@gitlab.com

c++ - 查找 boost::shared_ptr 循环引用

是否有查找shared_ptr的循环引用的任何提示/技巧?这是我要查找的示例-不幸的是,我似乎无法在我的代码中找到循环。structA{boost::shared_ptranC;};structB{boost::shared_ptranA;};structC{boost::shared_ptranB;}; 最佳答案 我建议使用Valgrind.当您关闭进程时,它会显示所有泄漏的内存。除非你的关机以某种方式打破了循环,否则任何循环都应该显示为内存泄漏,Valgrind会告诉你内存最初是从代码中的哪个位置分配的。

c++ - 通过 boost::shared_mutex 在 g++-4.4(不在 C++11/14 中)中实现多个读取器单个写入器是否会影响性能?

用法:在我们的产品中,我们有大约100个线程可以访问我们尝试实现的缓存。如果缓存丢失,则将从数据库中获取信息并通过编写器线程更新缓存。为此,我们计划实现多读单写我们无法更新g++版本,因为我们使用的是g++-4.4Update:Eachworkerthreadcanworkforbothreadandwrite.IfcacheismissedtheninformationiscachedfromtheDB.问题陈述:我们需要实现缓存来提高性能。为此,缓存读取更频繁,对缓存的写入操作要少得多。我认为我们可以使用boost::shared_mutexboost::shared_lock,b

c++ - 轻松地将许多重要的 "static library projects"重构为 "dll projects"

我有6个静态库项目:--Math-ECS:dependsonMath-Utility:dependsonECS-Physics:dependsonUtility-Graphics:dependsonUtility-BaseGame:dependsonPhysicsandGraphics-Somegame(.exe):dependsonBaseGame(The"depends"hereistransitivee.g.BaseGamealsodependsonECS.)我通过“静态库”技术成功地使用了6个项目。今天听说动态库可以减少编译时间(暂且不讨论是否属实),所以我阅读了以下链接并成功

c++ - enable_shared_from_this 不适用于 xcode 5

#include#includetemplateclassTest:publicstd::enable_shared_from_this>{public:std::shared_ptr>getMe(){returnshared_from_this();};};intmain(intargc,constchar*argv[]){TestaTest;return0;}当我尝试在Xcode5上编译它时,我得到了Useofundeclaredidentifier'shared_from_this'我测试了它并在VisualStudio2010上运行。 最佳答案

c++ - 关于 boost::shared_ptr 赋值的问题(相对于 reset() 函数)

很抱歉,如果这在某个地方得到了明确的回答,但我对我在网上阅读的boost文档和文章感到有些困惑。我看到我可以使用reset()函数释放shared_ptr中的内存(假设引用计数变为零),例如,shared_ptrx(newint(0));x.reset(newint(1));我相信这会导致创建两个整数对象,并且在这两行的末尾,等于零的整数将从内存中删除。但是,如果我使用以下代码块会怎样:shared_ptrx(newint(0));x=shared_ptr(newint(1));显然,现在*x==1是真的,但是原始整数对象(等于零)会从内存中删除还是我泄漏了内存?在我看来,这可能是赋值

c++ - shared_ptr 和循环引用

我尝试使用boost::shared_ptr的循环引用,并设计了以下示例:classA{//Trivialclasspublic:i32i;A(){}A(i32a):i(a){}~A(){coutchangeI(shared_ptrs){s->i++;coutp1=make_shared(3);shared_ptrp2=p1;shared_ptrp3=p2;shared_ptrp4=p3;p1=p4;//1)1stcyclicref.cout哪些输出454~A:4是不是我误解了boost::shared_ptr中提到的循环引用?因为,在注释1)和2)之后,我期望对p1的间接引用的不同输

c++ - 使用 boost shared_ptr

我必须使用智能指针,我发现来自boost的“shared_ptr”看起来不错。我下载了boost库,在那里我可以看到很多文件和库。有没有办法只使用shared_ptr? 最佳答案 boostbcp是你的friend。它允许从它的树中提取单独的boost库。我过去成功地使用了它。shared_ptr仅包含header,因此这对您特别有用。 关于c++-使用boostshared_ptr,我们在StackOverflow上找到一个类似的问题: https://st

c++ - shared_ptr 到数组

如何动态分配shared_ptr将指向的“n个元素”?我能够创建一个共享指针将指向的静态数组,但我希望用户输入一个数字,然后分配n个元素。shared_ptrp=make_shared(); 最佳答案 你应该像那样创建那个shared_ptrstd::shared_ptrsp(newint[10],std::default_delete());你必须给其他删除器shared_ptr您不能使用std::make_shared,因为该函数只提供1个参数,要在数组上创建指针,您还必须创建删除器。或者你也可以使用(比如在注释中,使用数组或v