Функция align declspec гарантирует только то, что __m128i выровнен относительно начала структуры данных.Если ваш распределитель памяти создает объекты, которые изначально не выровнены по 16 байтам, __m128i будет тщательно выровнен.Многие современные распределители памяти дают только 8-байтовое выравнивание.
Вам потребуется перегрузить новый оператор для DXPoint, чтобы использовать распределитель с лучшим управлением выравниванием, или использовать статически распределенные и правильно выровненные __m128is, или найти какое-то другое решение.
-
Извините, пропустил часть вашего вопроса "C ++ новичок".новая перегрузка операторов и пользовательские распределители памяти не являются темами для начинающих C ++.Если ваше приложение таково, что вы можете размещать объекты DXPoint / DXSize статически (т. Е. Как глобальные, а не как «новые»), то это также может сработать.В противном случае вы ныряете в бассейн в глубоком конце.