32位编译器:
char :1个字节
char*(即指针变量): 4个字节
short int : 2个字节
int: 4个字节
unsigned int : 4个字节
float: 4个字节
double: 8个字节
long: 4个字节
long long: 8个字节
unsigned long: 4个字节
64位编译器:
char :1个字节
char*(即指针变量): 8个字节
short int : 2个字节
int: 4个字节
unsigned int : 4个字节
float: 4个字节
double: 8个字节
long: 8个字节
long long: 8个字节
unsigned long: 8个字节
总结:32位和64位编译器的基本数据类型字节数主要差别在64位的指针和long为8字节。
C++内存对齐1.第一个成员变量放在类中内存offset为0的地方,之后的成员变量的对齐按照#pragma pack(n)指定的数值和这个成员变量类型所占字节数中,比较小的那个进行(成员变量间补齐)。
2.在成员变量完成各自内存对齐之后,类(结构或联合)本身也要进行内存对齐,对齐按照#pragma pack(n)指定的数值和类中最大成员变量类型所占字节数中,比较小的那个进行(类中最后一个成员变量结尾后补齐),类大小需要是对齐值得整数倍。
new需要分配不同的内存地址,不能分配内存大小为0的空间
避免除以sizeof(T)时得到除以0错误故使用一个字节来区分空类。
以上就是详解C++ 内存对齐的详细内容,更多关于C++ 内存对齐的资料请关注软件开发网其它相关文章!
您可能感兴趣的文章:c++ 结构体内存对齐基本概念及示例C++面试题之结构体内存对齐计算问题总结大全C++中的内存对齐实例详解C++对象内存分布详解(包括字节对齐和虚函数表)C语言、C++内存对齐问题详解VC++中内存对齐实例教程深入理解c/c++ 内存对齐关于C++内存中字节对齐问题的详细介绍