Я хочу выровнять структуры данных в моем приложении с кешем строк. Вот простой сценарий:Структуры данных выравнивания кэша
typedef struct container {
int a;
int b;
} cont __attribute__((aligned(64));
int main() {
cont *a;
a = malloc(sizeof(cont) * 10);
printf("%p", a);
return 0;
}
В этом случае я думал, что начальный адрес массива будет кэш выровнена, т.е. начинаются в 64 байтовой границе. Но печатаемый адрес - 0x9dd008, который не совпадает с границей 64 байта. Я что-то упустил в этой реализации?
Если у вас остались вопросы, пожалуйста, дайте мне знать. Я был бы рад ответить. – Jason