I problemi di allineamento della memoria con Eigen elencati in documentation si applicano ancora con C++ 11? Sembra che C++ 11 possa già occuparsi di allineare correttamente gli oggetti nello stack e nell'heap, con alignas
e std::allocator
che supporta l'allineamento.Problemi di allineamento di Eigen
7
A
risposta
3
Sì, i problemi di allineamento sono ancora presenti in C++ 11. Lo specificatore alignas
non ha alcun effetto sulle allocazioni dinamiche, che possono quindi causare ancora disallineamenti risultanti in asserzioni lanciate da Eigen.
È necessario continuare a utilizzare le strutture Eigen per l'assegnazione allineata, ad esempio EIGEN_MAKE_ALIGNED_OPERATOR_NEW
per l'assegnazione di oggetti o Eigen::aligned_allocator<T>
per l'allineamento dei contenitori.
Stai parlando della parte della documentazione che fa riferimento a un bug gcc? –
Inoltre, non è possibile passare Eigen oggetto per valore, è necessario utilizzare un allocatore personalizzato per contenitore, uno 'std :: vector' spezializzato e la macro per sovraccaricare 'operatore new' in classi che contengono oggetti Eigen. Perché in C++ 11 l'allineamento della memoria sembra essere supportato per la memoria stack e heap. – tmlen