Xenomaiの共有メモリにEigen :: Matrixを含むインスタンスを割り当てようとしましたが、配置割り当てEigen :: Matrixを共有メモリ(またはヒープ)に割り当てる方法は?
unsigned char * mem; //shared memory pointer
Robot * robot = new ((void *)(mem+ROBOT_ADDR)) Robot();
ロボットクラスにはいくつかのEigen :: Matrixが含まれています。しかし、共有オブジェクトにはロボットオブジェクトを割り当てることができません。
しかし、基本的な配分は以下の通りうまくいっていました。
Robot * robot = new Robot(); //work well!
アサーションログがある:
固有::内部:: plain_array :: plain_array() [二重T =有します。 intサイズ= 36; int型MatrixOrArrayOptions = 0]: アサーション `(reinterpret_castは(eigen_unaligned_array_assert_workaround_gcc47(配列))& 0xFの)== 0 & &は "この主張は、ここで説明されている:" "http://eigen.tuxfamily.org/dox-devel/group__TopicUnalignedArrayAssert.html"" ****このWebページを読んで! **** "'は失敗しました。
私はすでにログのウェブページをチェックしました。しかし、私の場合は解決策がありません。
Eigen :: Matrixを共有メモリ(またはユーザー定義の特定のヒープ)に配置する方法は?
別の解決策は、 'Matrix4f'の代わりに' Matrix 'のような整列しない型を使うことです。 –
ggael
私は '__attribute__((aligned aligned))'を使うように解決しました。おかげでXD – Dayamre