Pra*_*jam 5 c memory-management memory-alignment granularity
如何在C中获取CPU的内存粒度?
假设我想分配一个数组,其中所有元素都正确内存对齐。我可以将每个元素填充到特定大小 N 来实现这一点。我怎么知道N的值?
注意:我正在尝试创建一个内存池,其中每个插槽都是内存对齐的。任何建议将不胜感激。
这在很大程度上取决于您所使用的 CPU 微架构。
很多情况下,操作符的内存地址应该是操作数大小的倍数,否则执行速度会很慢(甚至可能抛出异常)。
但也有一些 CPU 根本不关心内存中操作数的特定对齐方式。
通常,C 编译器会为您关心这些细节。但是,您应该确保编译器采用正确的目标(微)体系结构,例如使用正确的编译器标志(-march=?在 gcc 上)指定它。