您的位置:首页 > 其它

结构体内存分配:举例待续

2015-08-31 20:10 253 查看

定义结构体类型,系统不为之分配内存单元。

当使用结构体类型定义变量时,才开辟内存单元。

结构体在内存中所占的大小决定于两点:

1.编译器默认或指定对齐数;(eg:64为ubuntu14.04 默认8)

这个可通过 ‘#pragma pack(n)’来指定

2.(每个成员)实际有效对齐数,指的是所有成员中所占字节最大的那一个

最后边界对齐的大小取决于上面两个值中的较小的那一个

#include <iostream>
using namespace std;

//pack(n):  n的值,必须是2的指数倍
#pragma pack(4)

struct B{
int a;// 4
double b;//  8
short c;// 4
};

//定义结构体类型
struct A                            //我的指定对齐数为4
{
//char name[3]; // 3    1
short name[3]; // 6     2
};

int main()
{
cout << "sizeof(A): " << sizeof(A) << endl;
//cout << "sizeof(B): " << sizeof(B) << endl;

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  内存分配