Perf совершает пикирование на ядрах x86 и x64, когда член пересекает границу строки кэша.Стандартное компиляторное значение по умолчанию - 8-байтовая упаковка, которая гарантирует, что вы в порядке с длинным длинным, двойным и 64-битным членами указателя.
Инструкции SSE2 требуют выравнивания 16, код будет бомбить, если он выключен.Вы не можете получить это из прагмы упаковки, например, распределитель кучи обеспечит только 8-байтовую гарантию выравнивания.Узнайте, что поддерживает ваш компилятор и CRT.Что-то вроде __declspec (align (16)) и пользовательский распределитель, такой как _aligned_malloc ().Или перераспределить память и настроить указатель самостоятельно.