由于结构体内的数据成员在内存中是连续。当给char分配一个字节,后面在跟一个int型数据,占4个字节。那么int型 就要寻2个周期。后面继续不完整,这样效率很低下。
因此最好取整。系统默认为4。
程序代码:
// Note:Your choice is C++ IDE
#include <iostream>
using namespace std;
int main()
{
return 0;
}
struct A
{
char c; 1 4
int n; 4 4
int d; 4 4
};12
struct A
{
char c; 1 4
int n; 4 4
double d; 8 8
};16
struct A
{
char c; 1 4
int n; 4 4
char cc; 1 4
}
#pragma pack (1)
struct A
{
char c; 1 2
int n; 4 4
char cc; 1 2
}
#pragma pack (8)
struct A
{
char c; 1 4
int n; 4 4
char cc; 1 4
}
class A
{
A();
private:
int m;
}; 4
class B
{
char c; 1 4
int n; 4 4
double d; 1 8
static int np;
}; 16 静态存储区
int B::np = 10;
空类空结构体都为一个字节。类与结构体一样,不考虑成员函数
当#pragma pack (1)内参数大于最大类型所占字节数,还是按照最大数据内型来处理。要是小于的话,就按参数来处理。