gpt4 book ai didi

c++ - 如何确定地址是否缓存对齐?

转载 作者:可可西里 更新时间:2023-11-01 17:54:26 26 4
gpt4 key购买 nike

是否有符合 C++11 标准(或者如果不符合,至少是普遍可接受的)的方法来确定地址是否与缓存行边界对齐?

例如像这样:

T* p = SOMETHING;
bool aligned = reinterpret_cast< std::uintptr_t > (p) % CACHE_LINE_SIZE == 0;

最佳答案

如果您有一个兼容 C++11 的编译器,那么它的文档会告诉您。

正如 Igor 在评论中提到的,reinterpret_cast 的规则包括:

A pointer can be explicitly converted to any integral type large enough to hold it. The mapping function is implementation-defined.

该术语不仅仅意味着“不可移植”,它还添加了特定要求,在 1.3.10 中找到:

implementation-defied behavior

behavior, for a well-formed program construct and correct data, that depends on the implementation and that each implementation documents

如果您的编译器没有记录转换为整数的指针是否实际上是内存地址,那么它就不是 C++ 编译器。

关于c++ - 如何确定地址是否缓存对齐?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24048701/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com