我们可以通过 IPC 传递具有动态管理成员的类对象吗?
Can we pass an object of class which has dynamically managed members via IPC?
我有一种情况,我需要通过 IPC 将一个对象(具有指向动态分配对象的指针(从一个进程发送到另一个进程。
该类的蓝图是:
class Example
{
std::string str;
char *cstring;
int value;
};
如您所见,它动态分配了指向映射到该进程的堆区域的数据成员。
如果是静态对象成员,那么它们就会在连续内存分配中映射,我们可以复制该对象,对吧?可能是我错了或错过了什么。
我们可以使用任何 IPC 机制复制整个对象并通过 IPC 发送吗?
希望你们中的任何人都可以分享一些细节,或者通过指出我正确的方向来工作或工作。
谢谢
通常,您需要将其序列化为顺序字节缓冲区,类似于写入或读取文件或通过网络/互联网的方式。有各种库可以帮助您解决此问题,无论是二进制格式,还是 JSON 或 XML 等结构化文本。有些可能会生成样板代码,以便与结构或类进行转换。
如果您在同一虚拟地址使用共享内存,则可以利用自定义分配器来确保 STL 类型和其他东西也将所有内容存储在共享内存中。我不确定该标准是否对标准定义的对象使用共享内存在技术上是合规的。我希望string
、vector
等工作,而像mutex
、fstream
等这样的东西则不会。
相关文章:
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 在运行时有条件地删除类成员或跳过调用该成员对象的构造函数
- C++是否有定义的方法来传递指向类的成员对象的成员函数的指针
- (2 问题)"类"类型重新定义(即使 #pragma 一次),以及静态函数内的静态成员对象初始化?
- 声明成员对象而不调用其默认构造函数
- 指向成员对象的指针 - 中断线程
- 是否有更好的方法来封装成员对象可以访问的共享存储池?
- 应该在成员对象上调用析构函数
- 调用成员对象的构造函数
- 将 const 类型引用对象注册为类成员对象C++
- 修改类 c++ 中的成员对象
- 从成员对象调用方法
- 从对象调用成员对象,错误:引用非常量值的初始值必须是左值
- 构造函数,成员对象
- 不能使外部类成为内部类内的成员对象
- 使用从另一个类继承的类的对象初始化成员对象
- 如何避免需要在初始化列表中初始化成员对象
- 初始化具有参数的类成员对象的正确方法
- 将指针添加到成员对象中的指针动态阵列
- C 将成员对象函数分配给类成员功能