草庐IT

shared-objects

全部标签

c++ - ZMQ : Sending custom CPP object over the ZMQ queue

我有一个名为GenericMessage的类,显示在下面的第一个代码片段中(在GenericMessage.hxx中定义)。我有一个名为TestFE.cpp的.cpp文件(参见下面的第二个代码片段),它试图通过ZMQ队列发送类GenericMessage的实例(另请参见下面的第四个代码片段-ZmqHandler.hxx)。TesfFE.cpp通过包含ZmqHandler.hxx在此处实现ZMQ推送模式。我还有另一个名为TestBE.cpp的.cpp文件(请参阅下面的第三个代码片段),它通过ZMQ队列接收上述GenericMessage实例。TestBE.cpp在此处实现ZMQ拉模式以通

c++ - Matlab/C++ : segmentation fault on parallel computing with C++ Mex persistent objects (cannot convert handle)

本帖引用:[1]http://www.mathworks.com/matlabcentral/newsreader/view_thread/278243“使C++对象在mex调用之间持久化,并且健壮。”[2]MATLABparforandC++classmexwrappers(copyconstructorrequired?)“MATLABparfor和C++类mex包装器(需要复制构造函数?)”我成功地实现了一个Matlab/C++接口(interface),基于[1]上提出的方法。无论如何,我在尝试将系统与Matlab并行计算一起使用时遇到了麻烦。在MEX接口(interface)

c++ - 子对象(看似)随机设置为 NULL 或 'illegal object' ;如何调试?

我将Cocos2d-x用于我从Cocos2d-iphone移植的游戏。最初的程序员似乎使用了Objective-C的“特性”来避免在调用nil对象时崩溃,以此来做很多草率的事情。如果这与我不知道的相关,但是,在我的代码中,我从不手动调用release(),当然也不会删除或类似的东西。我什至根本不调用->removeObject()(尽管这不会导致与我遇到的问题相同)。现在的问题是:当游戏运行时,在随机时刻(它们不会是随机的,但它们现在显然是随机的)子节点被设置为NULL。这不仅会影响我的代码,还会影响Cocos2d的内部结构。示例:CCLog("----------------");f

c++ - 在什么平台上 func(shared_ptr(...), shared_ptr(...)) 真的很危险?

我记得ScottMeyers教我的func(shared_ptr(newP),shared_ptr(newQ));是危险的,因为(如果我没记错的话)内存分配、引用计数(构造)和分配给顺序>函数参数允许leak(理论上?)在极少数情况下出现。为了防止这种情况应该将shared_ptr封装在函数调用中,例如在make_shared()中。func(make_shared(),make_shared());这是一些discussion关于它。我想知道是否有(当前)编译器在该领域,在某些系统上确实可能在某些错误情况下留下一些漏洞?还是那些时代已经过去了,或者它们只是理论上的?最有趣的是知道其中

c++ - boost::shared_ptr 到 void * 反之亦然

我正在用C语言开发一个应用程序,我需要在其中使用第3方C++库。所以,我基本上是在C++库周围编写一个包装器,以便可以从我的纯C应用程序中调用它。库中的一些方法返回类型为boost::shared_ptr的指针,我需要将其转换为void*[forC]然后将其转换回boost::shared_ptr类型以重用它以进行进一步处理。我使用以下方式进行转换:作废*:void*func1(){//aftertheboost::shared_ptriscreatedreturnstatic_cast(SHARED_PTR.get())}来自void*:voidfunc2(void*VOID_PTR

c++ - boost::shared_ptr,ctor 中的一个原子递增,但 dtor 中的两个原子递减?

我正在单步执行boost::shared_ptr的源代码,并且在构造时引用计数器调用一次原子增量。但是,在销毁时我看到原子递减被调用了两次,连接到弱引用?但是,这怎么行呢?在构建时递增一次,在销毁时递减两次,一次在release()中,一次在weak_release()中? 最佳答案 shared_ptr必须维护两个引用计数。一个用于共享实例,一个用于可能通过weak_ptr引用。有了这个,weak_ptr能够增加shared_ptr中的弱引用计数并保持shared_ptr事件(即使在分配的对象被释放之后)以确定从weak_ptr到

c++ - 谷歌模拟 : Is it ok to use global mock objects?

在所有关于gmock的文档中,我总是发现要在测试中实例化模拟对象,就像这样:TEST(Bim,Bam){MyMockClassmyMockObj;EXPECT_CALL(MyMockObj,foo(_));...}因此,对象在每次测试时都会被创建和销毁。我相信为每个测试夹具创建和销毁对象也完全没问题。但我想知道是否也可以拥有模拟对象的文件全局实例,就像这样:MyMockClassmyMockObj;TEST(Bim,Bam){EXPECT_CALL(MyMockObj,foo(_))...}我试过了,到目前为止我完全没有问题,一切似乎都很好。但也许我应该知道什么?只是因为我偶然发现了t

c++ - 为什么 std::future<T> 和 std::shared_future<T> 不提供成员 swap()?

C++标准库中的各种类都有成员交换函数,包括一些多态类,如std::basic_ios。.模板类std::shared_future显然是一个值类型并且std::future是一个只能移动的值类型。有什么特别的原因,他们不提供swap()成员函数? 最佳答案 在std::move之前,成员交换是一个巨大的性能提升C++11中的支持。例如,您可以通过这种方式将一个vector移动到另一个位置。它用于vector也会调整大小,这意味着插入vector的vector并不是完全的性能自杀。在std::move之后到达C++11,许多有时为空

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

我是C++的新手,正在尝试制作大富翁游戏。不幸的是,它仍然显示两个类之间的声明错误。我已经尝试了所有方法,但真的不知道问题出在哪里。错误:“玩家”未在此范围内声明。引擎.h#ifndefENGINE_H#defineENGINE_H#include"Player.h"#includeusingnamespacestd;classEngine{public:Engine();//methodthatstartswithgame,takerandomnumberforgettingnumberofplayers,setplayerstovectorvoidplay();//methodwh

c++ - boost::interprocess : cout a string variable when iterating through a map that references an object from a struct

我正在使用boost::interprocess在进程之间共享对象。我有两个文件,一个生成结构对象并将该对象传递到具有int索引的映射中的“server.cpp”;和一个“client.cpp”文件,它检索内存数据并遍历数据,输出到控制台。结构看起来像这样:structmydatao{stringMY_STRING;intMY_INT;};和对象:mydatao;o.MY_STRING="hello";o.MY_INT=45;服务器和客户端都能正确编译。但是出于某种原因,如果我尝试访问客户端中的字符串而不是float或整数,客户端可执行文件会抛出段错误。例如下面的second.MY_I