结构体对齐

结构体对齐是C/C++编程中特别重要的一个基础知识,尤其在我们编写的程序,使用在不同的系统(甚至跨平台)的时候,如果结构体默认的对齐方式不一致,而我们在代码中又没有考虑到兼容的问题,极有可能会引发一些内存相关的问题,it‘s so bad。所以,最好的做法就是设定结构体数据对齐。

#include <iostream>
using namespace std;

#pragma pack(push)  // 保存对齐状态
#pragma pack(4)     // 设定4字节对齐
struct test
{
    // 指针变量的所占内存的大小由编译器决定:
    // 通常16编译器上占2字节,32编译器上位占4字节,64位占8字节
    char* name;   // 8
    char ch;      // 1
    double d;    // 8
    int i;       // 4
};
#pragma pack(pop) // 恢复对齐状态

int main()
{
    cout << sizeof(test) << endl;
    return 0;
}
上一篇:#progma pack(x)说明


下一篇:使用tkinker做python GUI编程的一个案例