2015-04-09 13 views
7

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

+0

Stai parlando della parte della documentazione che fa riferimento a un bug gcc? –

+1

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

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.