假设
alignment
(address + alignment - 1u) & ~(alignment - 1u)
但是,为了执行此操作,需要将地址转换为
uintptr_t
void*
char*
C 和 C++ 在使用此类表达式的合法性方面有何不同?
严格的别名在这里无关紧要。但是通过将指针转换为整数产生的值是实现定义的。使用
std::align