Mir*_*pas 1 c++ memory-alignment c++11
考虑以下struct:
struct SomeStruct
{
int a;
float b;
double c;
};
Run Code Online (Sandbox Code Playgroud)
据我所知,当声明一个类型的对象时SomeStruct,struct(在这种情况下a)的第一个成员的地址等于对象本身的地址.
SomeStruct obj;
assert(reinterpret_cast<uintptr_t>(&obj) == reinterpret_cast<uintptr_t>(&obj.a));
Run Code Online (Sandbox Code Playgroud)
我可以假设a成员的运行时地址是否符合对齐要求,SomeStruct即使alignof(int) != alignof(SomeStruct)?
小智 5
9.2.19 指向标准布局结构对象的指针,使用reinterpret_cast进行适当转换,指向其初始成员(或者如果该成员是位字段,则指向它所在的单元),反之亦然.[注意:因此,在标准布局结构对象中可能存在未命名的填充,但不是在其开头,以实现适当的对齐. - 注意].
| 归档时间: |
|
| 查看次数: |
141 次 |
| 最近记录: |