码迷,mamicode.com
首页 > 编程语言 > 详细

C/C++结构体内存对齐

时间:2017-02-23 11:18:36      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:x64   size   1.2   open   main   .exe   exe   不同   div   

ZC: 注意点:
ZC:  (1)、不同的编译器 对结构体(“struct”和“typedef struct”)的内存对齐 可能不同;
ZC:  (2)、关键词“__packed”,网上查到 可以使用这个,但是我没有尝试成功,不知 如何使用...

 

测试环境:Win7x64,cn_visual_studio_2010_ultimate_x86_dvd_532347.iso,qt-opensource-windows-x86-msvc2010_opengl-5.3.2.exe

 

1、

 1.1、测试代码:

#pragma pack (1)//指定按2字节对齐/

struct struct01
{
    int i;
    short us;
};

typedef struct
{
    int i;
    short us;
} struct02;

struct struct03
{
    short us;
    int i;
};

typedef struct
{
    short us;
    int i;
} struct04;
#pragma pack ()//取消指定对齐,恢复缺省对齐/

struct struct05
{
    int i;
    short us;
};

typedef struct
{
    int i;
    short us;
} struct06;


struct struct07
{
    short us;
    int i;
};

typedef struct
{
    short us;
    int i;
} struct08;

void MainWindow::on_pushButton_clicked()
{
    qDebug() << "sizeof(struct01) : " << sizeof(struct01);
    qDebug() << "sizeof(struct02) : " << sizeof(struct02);
    qDebug() << "sizeof(struct03) : " << sizeof(struct03);
    qDebug() << "sizeof(struct04) : " << sizeof(struct04);
    qDebug() << "sizeof(struct05) : " << sizeof(struct05);
    qDebug() << "sizeof(struct06) : " << sizeof(struct06);
    qDebug() << "sizeof(struct07) : " << sizeof(struct07);
    qDebug() << "sizeof(struct08) : " << sizeof(struct08);
}

 1.2、控制台输出:

sizeof(struct01) :  6
sizeof(struct02) :  6
sizeof(struct03) :  6
sizeof(struct04) :  6
sizeof(struct05) :  8
sizeof(struct06) :  8
sizeof(struct07) :  8
sizeof(struct08) :  8

 

2、

3、

 

C/C++结构体内存对齐

标签:x64   size   1.2   open   main   .exe   exe   不同   div   

原文地址:http://www.cnblogs.com/cppskill/p/6431970.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!