大小端与内存空间对齐.cpp
2017-01-05 23:03
344 查看
/*查看电脑大小端
* 大端:低地址存储低位,小端:低地址存储高位
* */
#include <iostream>
using namespace std;
/*
联合体的成员变量是共享空间的,其空间大小由最大成员变量决定;
*/
void show1(){
union A{
int a;
char c[4];
};
struct B{
int a;
char b;
double c;
char d;
char e[10];
short f;
};
cout << "sizeof union : " << sizeof (union A) << endl;
//查看A的空间,由于其空间取决于最大的成员,故结果为4
cout << "sizeof struct : " << sizeof(struct B) << endl;
//查看B的空间,由于32位指令周期为4个字节(32位),即CPU一次最大可读取4字节,所以内存在优化时将和小于4字节的成员按照4字节计算,将大于4字节的拆分为4字节的整数倍,所以B的算法为 4 + 4 + 8 + 12 + 4 = 32 ,这个也是32位机指针为4个字节,64位机指针为8字节的原因
union A k;
k.a = 0x12345678;
//数组第一位为低地址
if(k.c[0] == 0x78)
cout << "小端" << endl;
else
cout << "大端" << endl;
}
void show2(){
int a = 0x12345678;
char * p = (char*)&a;
if(*p == 0x78)
//指针从低地址走向高地址
cout << "小端" << endl;
else
cout << "大端" << endl;
}
int main()
{
show1();
show2();
return 0;
}
* 大端:低地址存储低位,小端:低地址存储高位
* */
#include <iostream>
using namespace std;
/*
联合体的成员变量是共享空间的,其空间大小由最大成员变量决定;
*/
void show1(){
union A{
int a;
char c[4];
};
struct B{
int a;
char b;
double c;
char d;
char e[10];
short f;
};
cout << "sizeof union : " << sizeof (union A) << endl;
//查看A的空间,由于其空间取决于最大的成员,故结果为4
cout << "sizeof struct : " << sizeof(struct B) << endl;
//查看B的空间,由于32位指令周期为4个字节(32位),即CPU一次最大可读取4字节,所以内存在优化时将和小于4字节的成员按照4字节计算,将大于4字节的拆分为4字节的整数倍,所以B的算法为 4 + 4 + 8 + 12 + 4 = 32 ,这个也是32位机指针为4个字节,64位机指针为8字节的原因
union A k;
k.a = 0x12345678;
//数组第一位为低地址
if(k.c[0] == 0x78)
cout << "小端" << endl;
else
cout << "大端" << endl;
}
void show2(){
int a = 0x12345678;
char * p = (char*)&a;
if(*p == 0x78)
//指针从低地址走向高地址
cout << "小端" << endl;
else
cout << "大端" << endl;
}
int main()
{
show1();
show2();
return 0;
}
相关文章推荐
- CPP--借助神器VS理解内存存储(含大小端对齐)
- 大端和小端--内存对齐问题
- 内存-大小端对齐
- 内存对齐及大小端
- C++类空间大小关于内存对齐的学习
- 计算机大端模式和小端模式 内存对齐问题(sizeof)
- [面试] 结构体占用空间的问题,内存对齐~! 真的懂了,cpu取加快速度,省空间来考虑。
- 大端和小端--内存对齐问题
- 【C/C++开发】内存对齐(内存中的数据对齐)、大端模式及小端模式
- 计算机大端模式和小端模式 内存对齐问题(sizeof)[密码学哈希密码部分参考]
- c语言结构体类型占用的内存空间,需要考虑字节对齐
- [面试] 结构体占用空间的问题,内存对齐~! 真的懂了,cpu取加快速度,省空间来考虑。
- [转]位域、大小端、内存对齐
- 内存对齐,位段,大小端
- 32位和64位分配空间内存对齐
- 经典面试题 之 大小端 & 内存对齐补齐
- C# 使用 StructLayoutAttribute 时 C# /C++ 内存空间分配与成员对齐问题
- 内存对齐和大小端
- 内存对齐 大端字节,序小端字节序验证
- 视频解码器和render之间增加一个内容透传的filter,需要处理颜色空间的差异及显卡内存自动对齐问题