Próbuję użyć alignas
dla wskaźników, które są członkami klasy, i szczerze mówiąc nie jestem pewien, gdzie mam go umieścić.Zmaganie z alignas Składnia
na przykład:
class A
{
private:
int n;
alignas(64) double* ptr;
public:
A(const int num) : n(num), ptr(new double[num])
{}
};
które nadzieję zapewnić dane PTR był ustawiony w bloku 64 bajtów. Użycie kompilatora Intel nie powoduje.
Czy ktoś może wskazać mi właściwy kierunek, proszę?
Wygląda na to, że pracuję dla mnie (http://rextester.com/LCVUW98273) (zwróć uwagę na zbyt duży rozmiar litery "A"). A może masz nadzieję, że dane "ptr" wskazują ** na **, będą zbyt wyrównane? To wymagałoby naruszenia związku przyczynowego. –
Może Twój kompilator nie obsługuje wyrównania 64? – Brian
Dzięki Igor, to pokazuje źródło mojego nieporozumienia. Wskaźnik jest wyrównany, a nie dane, do których wskazuje. Miałem nadzieję, że blok danych zostanie wyrównany. – user1683586