@CrazyHenry
2018-03-03T09:06:42.000000Z
字数 1285
阅读 1345
ccccC++Primer
- Author:李英民 | Henry
- E-mail: li
_
yingmin@
outlookdot
com- Home: https://liyingmin.wixsite.com/henry
快速了解我: About Me
转载请保留上述引用内容,谢谢配合!
http://blog.csdn.net/lime1991/article/details/44536343
http://blog.csdn.net/jollyhope/article/details/1895357
https://www.jianshu.com/p/46acf45ee795
不同机型下,变量的位数都可能不同:
一般来说32位机情况:
模数是【#pragma pack指定的数值】、【未指定#pragma pack时,系统默认的对齐模数8字节】和【结构体内部最大的基本数据类型成员】长度中数值较小者。
空类是会占用内存空间的,而且大小是1,原因是C++要求每个实例在内存中都有独一无二的地址。
(一)类内部的成员变量:
(二)类内部的成员函数:
#pragma pack (n) 作用:C编译器将按照n个字节对齐。
#pragma pack () 作用:取消自定义字节对齐方式。
#pragma pack (push,1) 作用:是指把原来对齐方式设置压栈,并设新的对齐方式设置为一个字节对齐
#pragma pack(pop) 作用:恢复对齐状态
http://blog.csdn.net/mydreamremindme/article/details/10285533
//32位机
//含有联合体的结构体的sizeof
struct s1
{
char *ptr,ch; //模为4,则4+4=8
union A //后面跟了A标书定义了一个类型,不占内存,而后面不跟A,是声明了结构体的一个成员,占内存。这种事内部类的用法
{
short a,b;
unsigned int c:2, d:1;
};
struct s1* next; //指针占4
};//这样是8+4=12个字节
struct s1
{
char *ptr,ch; //4+4
union //联合体是结构体的成员,占内存,并且最大类型是unsigned int,占4
{
short a,b; //最大占2
unsigned int c:2, d:1; //最大占4
};
struct s1* next; //4
};//这样是16字节