【发布时间】:2014-02-06 09:20:21
【问题描述】:
我想将我的应用程序中的数据结构与缓存行对齐。这是一个简单的场景:
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 字节边界对齐。我在这个实现中遗漏了什么吗?
【问题讨论】:
-
如果您还有任何问题,请告诉我。我很乐意回答。
标签: caching memory-management memory-alignment