是否可以在共享内存中存储多态类?

2023-11-24

假设我有课Base and Derived : public Base。 我使用 boost::interprocess 库构建了一个共享内存段。是否可以有类似这样的代码:

Base* b = new Derived(); 
write(b); //one app writes
Base* b2 = read(b); //second app reads
//b equals b2 (bitwise, not the ptr location)

我在这里看到的问题是,例如,Base 的派生类所需的空间是未知的(那么要分配多少 shmem?)

Q:如何在应用程序之间通过指针传递对象?


只需阅读其文档

尤其:

虚拟禁止

虚表指针和虚表在地址中 构造对象的过程的空间,所以如果我们放置一个 具有虚函数或虚基类的类,虚函数 放置在共享内存中的指针对于其他进程来说是无效的 他们会崩溃。

这个问题很难解决,因为每个进程都需要一个 不同的虚拟表指针和包含该指针的对象 指针在许多进程之间共享。即使我们映射了映射的 每个进程中同一地址的区域,虚拟表可以是 在每个进程的不同地址中。启用虚拟功能 对于进程之间共享的对象,需要进行深度编译器更改 虚拟函数的性能会受到影响。这就是为什么 Boost.Interprocess没有任何支持虚函数的计划 以及进程之间共享的映射区域中的虚拟继承。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以在共享内存中存储多态类? 的相关文章

  • 使用 gcc 在 Linux 上运行线程构建块 (Intel TBB)

    我正在尝试为线程构建块构建一些测试 不幸的是 我无法配置 tbb 库 链接器找不到库 tbb 我尝试在 bin 目录中运行脚本 但这没有帮助 我什至尝试将库文件移动到 usr local lib 但这又失败了 任何的意见都将会有帮助 确定您
  • 在 xaml 中编写嵌套类型时出现设计时错误

    我创建了一个用户控件 它接受枚举类型并将该枚举的值分配给该用户控件中的 ComboBox 控件 很简单 我在数据模板中使用此用户控件 当出现嵌套类型时 问题就来了 我使用这个符号来指定 EnumType x Type myNamespace
  • 没有特殊字符的密码验证器

    我是 RegEx 的新手 已经进行了大量搜索 但没有找到任何具体内容 我正在编写一个验证密码字符串的正则表达式 可接受的字符串必须至少具有 4 种字符类型中的 3 种 数字 小写字母 大写字母 特殊字符 我对包含有一个想法 也就是说 如果这
  • 从经典 ASP 调用 .Net C# DLL 方法

    我正在开发一个经典的 asp 项目 该项目需要将字符串发送到 DLL DLL 会将其序列化并发送到 Zebra 热敏打印机 我已经构建了我的 DLL 并使用它注册了regasm其次是 代码库这使得 IIS 能够识别它 虽然我可以设置我的对象
  • 如何连接重叠的圆圈?

    我想在视觉上连接两个重叠的圆圈 以便 becomes 我已经有部分圆的方法 但现在我需要知道每个圆的重叠角度有多大 但我不知道该怎么做 有人有主意吗 Phi ArcTan Sqrt 4 R 2 d 2 d HTH Edit 对于两个不同的半
  • 如何使从 C# 调用的 C(P/invoke)代码“线程安全”

    我有一些简单的 C 代码 它使用单个全局变量 显然这不是线程安全的 所以当我使用 P invoke 从 C 中的多个线程调用它时 事情就搞砸了 如何为每个线程单独导入此函数 或使其线程安全 我尝试声明变量 declspec thread 但
  • 用于 FTP 的文件系统观察器

    我怎样才能实现FileSystemWatcherFTP 位置 在 C 中 这个想法是 每当 FTP 位置添加任何内容时 我都希望将其复制到我的本地计算机 任何想法都会有所帮助 这是我之前问题的后续使用 NET 进行选择性 FTP 下载 ht
  • 对类 static constexpr 结构的未定义引用,g++ 与 clang

    这是我的代码 a cp p struct int2 int x y struct Foo static constexpr int bar1 1 static constexpr int2 bar2 1 2 int foo1 return
  • 需要帮助优化算法 - 两百万以下所有素数的总和

    我正在尝试做一个欧拉计划 http projecteuler net问题 我正在寻找 2 000 000 以下所有素数的总和 这就是我所拥有的 int main int argc char argv unsigned long int su
  • 使用 C# 中的 CsvHelper 将不同文化的 csv 解析为十进制

    C 中 CsvHelper 解析小数的问题 我创建了一个从 byte 而不是文件获取 csv 文件的类 并且它工作正常 public static List
  • WcfSvcHost 的跨域异常

    对于另一个跨域问题 我深表歉意 我一整天都在与这个问题作斗争 现在已经到了沸腾的地步 我有一个 Silverlight 应用程序项目 SLApp1 一个用于托管 Silverlight SLApp1 Web 的 Web 项目和 WCF 项目
  • C 编程:带有数组的函数

    我正在尝试编写一个函数 该函数查找行为 4 列为 4 的二维数组中的最大值 其中二维数组填充有用户输入 我知道我的主要错误是函数中的数组 但我不确定它是什么 如果有人能够找到我出错的地方而不是编写新代码 我将不胜感激 除非我刚去南方 我的尝
  • 如何在当前 Visual Studio 主机内的 Visual Studio 扩展中调试使用 Roslyn 编译的代码?

    我有一个 Visual Studio 扩展 它使用 Roslyn 获取当前打开的解决方案中的项目 编译它并从中运行方法 程序员可以修改该项目 我已从当前 VisualStudioWorkspace 成功编译了 Visual Studio 扩
  • C# 动态/expando 对象的深度/嵌套/递归合并

    我需要在 C 中 合并 2 个动态对象 我在 stackexchange 上找到的所有内容仅涵盖非递归合并 但我正在寻找能够进行递归或深度合并的东西 非常类似于jQuery 的 extend obj1 obj2 http api jquer
  • 复制目录下所有文件

    如何将一个目录中的所有内容复制到另一个目录而不循环遍历每个文件 你不能 两者都不Directory http msdn microsoft com en us library system io directory aspx nor Dir
  • 如何在 Android 中使用 C# 生成的 RSA 公钥?

    我想在无法假定 HTTPS 可用的情况下确保 Android 应用程序和 C ASP NET 服务器之间的消息隐私 我想使用 RSA 来加密 Android 设备首次联系服务器时传输的对称密钥 RSA密钥对已在服务器上生成 私钥保存在服务器
  • 使用特定参数从 SQL 数据库填充组合框

    我在使用参数从 sql server 获取特定值时遇到问题 任何人都可以解释一下为什么它在 winfom 上工作但在 wpf 上不起作用以及我如何修复它 我的代码 private void UpdateItems COMBOBOX1 Ite
  • 为什么 std::uint32_t 与 uint32_t 不同?

    我对 C 有点陌生 我有一个编码作业 很多文件已经完成 但我注意到 VS2012 似乎有以下语句的问题 typedef std uint32 t identifier 不过 似乎将其更改为 typedef uint32 t identifi
  • 现代编译器是否优化乘以 1 和 -1

    如果我写 template
  • 如何确定 CultureInfo 实例是否支持拉丁字符

    是否可以确定是否CultureInfo http msdn microsoft com en us library system globalization cultureinfo aspx我正在使用的实例是否基于拉丁字符集 我相信你可以使

随机推荐

  • 如何在 Xcode 4 中打开内存浏览器?

    在 Xcode 3 中调试程序时 我经常在单独的窗口中使用内存浏览器来查看缓冲区更改的内容 同时单步执行代码行 当我现在开始使用 Xcode 4 时 我想知道如何打开内存浏览器 我在用户界面中找不到类似的东西 有人可以提供帮助吗 调试时选择
  • Android 10 无法注册 Sensor.TYPE_STEP_COUNTER

    我目前正在开发一个应用程序来跟踪步骤 为了跟踪步骤 我使用手机的以下传感器 传感器 TYPE STEP COUNTER 这对于我测试过的所有设备都运行良好 最近我有机会在三星 S10 设备上测试该应用程序 但它不再跟踪步骤 而它在三星 S9
  • HTML5 视频:可以在视频上放置常规 html 内容

    只是想知道是否有人知道让常规 html 内容 主要是 img 标签 显示在视频顶部 通过 video 标签 的技巧 正如其他人所暗示的 将 HTML 元素放置在VIDEO使用绝对定位的元素 当您尝试在 iPhone iPod 和可能较旧的
  • 如何在 Visual Studio 中提取默认控件模板?

    我想知道如何使用 Visual Studio 提取 获取副本 给定控件的默认模板 我知道这可以使用 Expression Blend 来完成 右键单击控件 编辑模板 gt 编辑副本 然后将默认控件模板复制到我的 Xaml 中 但这可以用 V
  • POST 和 PUT 的不同模型要求

    假设我有一个控制器CatController包括 GET POST 和 PUT 操作 他们都使用相同的Cat资源可能如下所示 public class CatDto public int Id get set Required public
  • 为什么 hazelcast 的默认分区数为 271?选择分区数的参数是什么?

    我刚刚浏览了 hazelcast 文档 它表明数据跨所有节点进行分区 默认情况下在集群 271 中创建的分区数 哪些参数控制正确分区计数值的选择 为什么默认分区数是 271 271 是质数 给定任何键 Hazelcast 都会对键进行哈希处
  • Jenkins:开始构建时发送电子邮件通知

    在 Jenkins 中 有没有办法在开始构建时发送邮件 我知道有一个构建后电子邮件通知 它会在构建成功或失败后向给定收件人发送邮件 同样 我期待类似预构建通知之类的东西 还有一个条件电子邮件 例如 if username null 发送至
  • 我的智能手机每秒可以执行多少次 FFT? (用于执行语音识别)

    我正在探索语音识别和 DSP 因此我想在我的智能手机上实现一个简单的声音频率分析仪 我有一部 iPhone 和一部运行 Android 的三星 Nexus S 我以前在Matlab中做过基本的DSP 根据我的理解 我需要执行 FFT 来获取
  • 如何使用 UWP MarkupExtension 类?

    Fall Creators 更新 SDK 添加了标记扩展类 非常棒 https learn microsoft com en us uwp api windows ui xaml markup markupextension 所以我创建了一
  • 创建交互式应用程序原型的最佳方法是什么?

    这个问题应该从一般的角度来解释 而不是仅仅针对网络应用程序或桌面应用程序 我一直在寻找一种简单易用的方法来为 Web 应用程序创建交互式原型 我想使用一种技术 允许简单的 UI 创建 特别是在进一步迭代中重新创建和修改 UI 用模型数据填充
  • android:TimePickerDialog 阻止用户选择过去的时间,并可以选择具有新日期的未来时间

    我正在使用这个链接Android TimePickerDialog 设置最大时间 我是安卓新手 借助此代码 我无法选择过去的时间 但我们无法选择未来的时间 当在时间选择器对话框模式中选择 12 时 根据第二天而不是过去的一天自动更改为 am
  • AngularJS:扩展输入指令

    我想知道是否可以扩展 Angular 的输入指令 我想将一些侦听器附加到页面上的所有输入字段 我认为你可以用以下方式装饰现有模块 provide decorate 但我不知道如何使用指令 更准确地说是输入指令 来做到这一点 那么 有人能把我
  • 如何将wav文件转换为浮动幅度

    所以我问了标题中的所有内容 我有一个 wav 文件 由 PyAudio 从输入音频编写 我想将其转换为与声级 振幅 相对应的浮点数据 以进行一些傅里叶变换等 有人有将 WAV 数据转换为 float 的想法吗 我已经找到了两种不错的方法来做
  • Java中的字符串和字符数组

    我是一名刚从C 转向Java的学生 在 Java 中 为 String 和 Char 数组定义单独的数据类型的主要原因是什么 两者有什么区别 由于我只学过C 到目前为止我的印象是它们是同一件事 如果可能的话请澄清 String是不可变的 C
  • 加载和存储是唯一需要重新排序的指令吗?

    我读过很多关于内存排序的文章 它们都只说 CPU 重新排序加载和存储 CPU 我对 x86 CPU 特别感兴趣 是否只重新排序加载和存储 而不重新排序它拥有的其余指令 乱序执行保留了按程序顺序运行的错觉对于单线程 核心 这就像C C as
  • 停止服务内的线程

    我在服务中有一个线程 我希望能够在按下时停止该线程buttonStop在我的主要活动课上 在我的主要活动课上 我有 public class MainActivity extends Activity implements OnClickL
  • C++中通过引用传递指针

    我有一个函数 将迭代器传递给 char 缓冲区 这也是一个 char 该函数需要递增迭代器 无论如何 我发现将迭代器传递到函数中的一个好方法是通过引用传递指针 bool myFunction unsigned char iter 但是 我听
  • 将 CSV 文件转换为 Lua 中定义键的表

    我正在学习 Lua 来构建飞行模拟器的脚本 我有一个 CSV 文件 如下所示 Poti city Poti red 295731 42857144 617222 85714285 Lanchhuti city Poti red 299217
  • 使用Xcode和SDK构建胖静态库(设备+模拟器)4+

    理论上 我们似乎可以构建一个包含模拟器以及 iPhone 和 iPad 的静态库 然而 Apple 没有我能找到的相关文档 并且 Xcode 的默认模板也没有配置为执行此操作 我正在寻找一种可以在 Xcode 内完成的简单 可移植 可重用的
  • 是否可以在共享内存中存储多态类?

    假设我有课Base and Derived public Base 我使用 boost interprocess 库构建了一个共享内存段 是否可以有类似这样的代码 Base b new Derived write b one app wri