ary*_*rye 2 c struct memory-alignment
假设我有结构:
typedef struct my_char {
char c;
} my_char_t;
Run Code Online (Sandbox Code Playgroud)
我可以假设任何时候内存地址都会对齐吗?
我想也许是的,因为在教程中我看到了这样的结构:
typedef struct my_char2 {
char c;
int i;
} my_char2_t;
Run Code Online (Sandbox Code Playgroud)
c和之间有填充i,因此看起来假设c是对齐的。
通过普通方式(例如通过使用定义对象的声明或通过使用malloc分配空间)在 C 中创建的任何对象都将具有 C 实现对该对象所需的对齐方式。
的对齐要求struct my_char { char c; }通常只是一个字节,因为该结构只包含一个具有一字节对齐要求的成员。结构的对齐要求通常是其成员中最严格的对齐要求,因此struct { char c; }具有一字节要求,并且struct { char c; int i; }具有与 an 相同的对齐要求int,在现代 C 实现中通常为四个字节。
| 归档时间: |
|
| 查看次数: |
128 次 |
| 最近记录: |