struct 字节对齐问题(不包含struct嵌套的讨论以及修改机器的对齐方式的时候),更详细的请参考收藏
来源:互联网 发布:虚拟gps定位软件 ios 编辑:程序博客网 时间:2024/06/06 04:18
字节对齐掌握4个原则:
1 与首地址的偏移量必须是变量长度的整数倍
2 变量按定义的顺序存放
3 整个结构体的长度必须是最长成员变量长度的整数倍
4 如果有struct嵌套,则子struct中的变量必须在整个struct符合以上三个原则,但是子struct自身各个变量之间的存储位置不会变。
e.g.
struct NSSB{
long a;
short b;
char c;
short d;
char ch[3];
}obj,*p;
cout<<"sizeof long "<<sizeof(long)<<endl;
cout<<"sizeof double "<<sizeof(double)<<endl;
cout<<"sizeof float "<<sizeof(float)<<endl;
cout<<"sizeof int "<<sizeof(int)<<endl;
cout<<"sizeof short "<<sizeof(short)<<endl;
cout<<"sizeof char "<<sizeof(char)<<endl;
cout<<"sizeof p "<<sizeof(p)<<endl;
cout<<"sizeof *p "<<sizeof(*p)<<endl;
p=(struct NSSB *)0x1000000;
// cout<<"next struct is "<<(p + 0x1)<<endl;
//obj.c = 'C';
cout<<"a "<<&obj.a<<endl;
cout<<"b "<<&obj.b<<endl;
cout<<"c "<<&obj.c<<endl;
cout<<"d "<<&obj.d<<endl;
cout<<"ch "<<&obj.ch<<endl;
运行结果:
[root@127 test]# ./test.x
sizeof long 4
sizeof double 8
sizeof float 4
sizeof int 4
sizeof short 2
sizeof char 1
sizeof p 4
sizeof *p 16
a 0xbfcee3c0
b 0xbfcee3c4
c d��ο
d 0xbfcee3c8
ch 0xbfcee3ca
- struct 字节对齐问题(不包含struct嵌套的讨论以及修改机器的对齐方式的时候),更详细的请参考收藏
- struct n字节的对齐方式
- sizeof(struct)--关于字节对齐的问题
- struct 成员的对齐方式
- struct的内存对齐方式
- struct 成员的对齐方式
- struct 成员的对齐方式
- struct 成员的对齐方式
- struct的字节对齐问题(通过pragma pack(n)改变字节对齐的例子)
- struct的成员对齐问题
- struct、union的对齐问题
- C++中struct的字节对齐
- C struct的字节对齐问题及sizeof的用法
- 字节对齐之包含嵌套struct
- struct的成员对齐
- struct的对齐
- struct的成员对齐
- struct的成员对齐
- C++设计模式之三:Factory Method(工厂方法)
- 关于leap motion的原理和疑点
- Entity Framework 4中删除所有数据行的几种方法
- Android 中弹出对话框 代码
- C语言中scanf函数的详解
- struct 字节对齐问题(不包含struct嵌套的讨论以及修改机器的对齐方式的时候),更详细的请参考收藏
- java.lang.OutOfMemoryError: bitmap size exceeds VM budget
- 用栈写出Fibonacci的递归和不递归程序
- html操作
- C语言中#include "stdafx.h"详解
- C++中typedef struct与struct的区别
- 项目开发和管理需要弄清楚的6个问题
- 关于typedef的用法总结
- RMAN-06214: Datafile Copy