__declspec (align (#)) в куче - PullRequest
       26

__declspec (align (#)) в куче

0 голосов
/ 03 декабря 2018

Как бы вы выровнять объекты, расположенные в куче, подобно __declspec (align (#))?Это включает массивы, поэтому нельзя просто добавить выравнивание в класс

class SomeClass
{
    //Something
}

//Somewhere
a = new SomeClass[20] //aligned to 64 bytes

1 Ответ

0 голосов
/ 03 декабря 2018

__declspec (align ()) работает только для объектов со статическим временем жизни, если вам нужно выравнивание больше, чем предусмотрено new, вам нужно будет использовать специализированный распределитель, который может справиться с этим (например, с помощью _aligned_malloc или VirtualAlloc).

_aligned_malloc позволяет вам указать необходимое выравнивание, в то время как VirtualAlloc использует гранулярность распределения системы (которая равна 64 КБ во всех известных мне версиях окон, безусловно, это большое значение по сравнению с большинством выделений).

...