结构体的长度(内存对齐)
2008-05-05 16:12
183 查看
结构体的长度并不是简单的将结构体中的成员长度相加而得,下面举例说明如何计算机构体长度:
typedef struct example
{
byte num;
byte name;
DWORD address;
}
Sizeof(example)的结果应该是8,而不是6;
VC++中为结构体分配内存时,先分配一单位长度(结构体中占内存最多数据类型,如int的长度4),然后在该单位长度中依次为结构中的变量分配空间,直至该单位空间不能再分配完一个完整的变量时为止,就再为该结构体分配另一个单位长度的存储空间。
将上面例子结构体中元素换一下位置:
typedef struct example
{
byte num;
DWORD address;
byte name;
}
Sizeof(example)的结果变为12,所以在平时的编程中注意一下内存对齐可以节省内存。
typedef struct example
{
byte num;
byte name;
DWORD address;
}
Sizeof(example)的结果应该是8,而不是6;
VC++中为结构体分配内存时,先分配一单位长度(结构体中占内存最多数据类型,如int的长度4),然后在该单位长度中依次为结构中的变量分配空间,直至该单位空间不能再分配完一个完整的变量时为止,就再为该结构体分配另一个单位长度的存储空间。
将上面例子结构体中元素换一下位置:
typedef struct example
{
byte num;
DWORD address;
byte name;
}
Sizeof(example)的结果变为12,所以在平时的编程中注意一下内存对齐可以节省内存。
相关文章推荐
- sizeof(char *) = 8——C语言中的数据长度、结构体及内存对齐
- 结构体的基本概念以及内存对齐
- [转]结构体最后的长度为0或者1的数组
- Swift中获取String结构体字符串的长度
- 【转】 结构体内存对齐
- 结构体最后的长度为0或者1的数组
- 结构体内存大小的求法(内存对齐)
- 关于结构体,内存对齐,sizeof
- C语言深度解剖读书笔记(3.结构体中内存对齐问题)
- 3.c语言结构体成员内存对齐详解
- 结构体的长度计算
- 结构体内存大小的求法(内存对齐)&&c++类大小同样适用
- 结构体中最后一个成员为[0]或[1]长度数组(柔性数组成员)的用法
- sizeof空结构体长度
- 《c和指针》笔记--包含位域结构体的内存对齐(32bit,GCC)
- 结构体的内存对齐
- Java中发送结构体struct(xml字符串及包体长度) 到C/C++[正解]
- CSAPP读书笔记——结构体的内存对齐
- 学习笔记-CC++-结构体与sizeof内存对齐-必考题及答案
- 在结构体最后定义一个长度为0的字符数组(技巧)