J'ai juste essayé d'allouer une instance qui contient Eigen :: Matrix à la mémoire partagée de Xenomai.Comment faire pour l'allocation de l'emplacement Eigen :: Matrix à la mémoire partagée (ou Heap)?
unsigned char * mem; //shared memory pointer
Robot * robot = new ((void *)(mem+ROBOT_ADDR)) Robot();
La classe Robot contient plusieurs Eigen :: Matrix. Cependant, je ne peux pas allouer d'objet robot dans ma mémoire partagée.
Mais l'allocation de base fonctionnait bien ci-dessous.
Robot * robot = new Robot(); //work well!
Le journal d'assertion est:
Eigen :: :: interne plain_array :: plain_array() [avec T = deux; int Taille = 36; int MatrixOrArrayOptions = 0]: Assertion `(reinterpret_cast (eigen_unaligned_array_assert_workaround_gcc47 (tableau)) & 0xf) == 0 & & "cette affirmation est expliquée ici:" "http://eigen.tuxfamily.org/dox-devel/group__TopicUnalignedArrayAssert.html"" **** LIRE CETTE PAGE WEB !!! ****"' échoué.
J'ai déjà vérifié la page Web dans le journal. Mais il n'y a pas de solution pour mon cas.
Comment faire pour l'allocation d'emplacements Eigen :: Matrix to Shared Memory (ou segment spécifique défini par l'utilisateur)?
Une autre solution consiste à utiliser des types non alignés comme: 'Matrix' au lieu de 'Matrix4f'. –
ggael
Je l'ai résolu pour utiliser '__attribute__ ((aligné 16))'. Merci XD – Dayamre