2015-04-09 10 views
7

Czy problemy z wyrównaniem pamięci z Eigenem wymienione w documentation nadal mają zastosowanie w C++ 11? Wygląda na to, że C++ 11 może już zadbać o prawidłowe wyrównanie obiektów na stosie i na stercie, z alignas i std::allocator, które obsługuje wyrównanie.Problemy z wyrównaniem Eigen

+0

Czy mówisz o części dokumentacji odnoszącej się do błędu gcc? –

+1

Ponadto nie można przekazać obiektu Eigen według wartości, należy użyć niestandardowego przydziału dla kontenera, spezjalnego 'std :: vector' i makra, aby przeciążyć' operator new' w klasach zawierających obiekty Eigen. Ponieważ w C++ 11 wyrównanie pamięci wydaje się być obsługiwane dla pamięci stosu i sterty. – tmlen

Odpowiedz

3

Tak, problemy z wyrównaniem są nadal obecne w C++ 11. Specyfikator alignas nie ma wpływu na alokacje dynamiczne, co może w dalszym ciągu powodować niedopasowania, powodujące asercje generowane przez Eigen.

Będziesz musiał nadal korzystać z urządzeń Eigen zapewnia wyrównane alokacje, takie jak EIGEN_MAKE_ALIGNED_OPERATOR_NEW do przydzielania obiektów lub Eigen::aligned_allocator<T> do wyrównywania pojemników.

Powiązane problemy