如何进行放置分配特征::矩阵到共享内存(或堆)?
How to do placement allocation Eigen::Matrix to Shared Memory (or Heap)?
我只是尝试将一个包含Eigen::Matrix的实例分配给Xenomai的共享内存。
unsigned char * mem; //shared memory pointer
Robot * robot = new ((void *)(mem+ROBOT_ADDR)) Robot();
Robot 类包含多个 Eigen::Matrix。但是,我无法在共享内存中分配机器人对象。
但基本分配在下面运作良好。
Robot * robot = new Robot(); //work well!
断言日志为:
Eigen::internal::p lain_array::p lain_array(( [T = double; int size = 36; int MatrixOrArrayOptions = 0]: Assertion '(reinterpret_cast(eigen_unaligned_array_assert_workaround_gcc47(array(( & 0xf( == 0 &&"这个断言在这里解释:"http://eigen.tuxfamily.org/dox-devel/group__TopicUnalignedArrayAssert.html" " 阅读此网页!!"' 失败。
我已经检查了日志中的网页。但是我的情况没有解决方案。
如何进行放置分配 Eigen::Matrix 到共享内存(或用户定义的特定堆(?
根据链接的网页:
固定大小的可矢量化特征对象必须绝对在 16 字节对齐的位置创建,否则寻址这些对象的 SIMD 指令将崩溃。
所以问题是mem+ROBOT_ADDR
没有 16 字节对齐。 您需要确保它是。
相关文章:
- 是否可以通过C++扩展强制多个python进程共享同一内存
- 使用Boost Interprocess创建托管共享内存需要很长时间
- 多个"常量引用"变量可以共享同一个内存吗?
- 使用共享指针时,从共享指针本身释放内存的机制是什么
- 字符串共享内存映射的向量
- CUDA 使用共享内存平铺 3D 卷积实现
- 共享内存:MapViewOfFile 返回错误 5
- 在共享缓冲区内存中创建 ::std::string 对象
- 如何在多写入器情况下对文件支持的共享内存中的大页面出错
- Directx 12 :在两个进程之间共享图形内存
- 有没有办法列出所有共享内存对象的名称?
- 子进程更新共享 mmap 内存,但父进程没有更改
- C++线程之间的内存共享
- 使用Windows共享内存共享小数据
- 更有效地使用fork()和写时复制内存共享
- 从托管代码到非托管代码跨共享内存共享整数数组
- 通过内存共享c++对象
- 内存共享;继承;基实例和派生实例;c++
- Matlab与c++在MEX中的内存共享
- 跨共享内存共享 std::字符串