笔记心得
腾讯刷题笔记 (sizeof问题)
- struct的size问题
#include <iostream>
using namespace std;
struct xx{
//long long _x1;
int _x3;
char _x2;
char _x4[2];
// static int _x5;
};
//int xx::_x5;
int main()
{
cout<<sizeof(xx)<<endl;
cout << "Hello world!" << endl;
return 0;
}
参考内容内存对齐
32位操作系统
- sizeof问题
- long 4位;
- int 4位;
- char 1位;
- float 4位;
- double 8位;
在C语言中,struct 中的static属性并不会占用struct的存储空间
- 内存对齐问题
- 在struct中,内存对齐会使用
'数据成员'
中最长的那一位,进行内存对齐;
- 在struct中,内存对齐会使用
- 顺序问题
- 在代码中的变量定义顺序会影响sizeof的长度
- 如上面 _x3与_x2目前的位置,得出的sizeof的长度为按照 int 类型进行内存对齐,此时的 sizeof 的长度为 4+1+2 -> 8;
- 如果交换_x2与_x3的顺序的话,得到的sizeof的长度为 1(4)+4+2(4) = 12