#pragma pack,sizeof
来源:互联网 发布:越南橡皮筋淘宝 编辑:程序博客网 时间:2024/05/18 03:41
VC中提供了#pragma pack(n)来设定变量以n字节对齐方式。
默认为8字节对齐,如在stdio.h中有:
#ifdef _MSC_VER //microsoft c compiler version
/*
* Currently, all MS C compilers for Win32 platforms default to 8 byte
* alignment.
*/
#pragma pack(push,8)
#endif /* _MSC_VER */
如下例:
#pragma pack(push) //保存对齐状态
#pragma pack(4)//设定为4字节对齐
struct test{
char a; //1
int b; //4
short c; //2
long d; //4
long d; //4
double e; //8
};
#pragma pack(pop)//恢复对齐状态
假设n为自定义对齐方式字节大小,结构体的对齐字节大小为:align = MAX(N,MAX(sizeof(type[i]))),type[i]为结构体第i个变量的类型。
sizeof(struct) = align的倍数。
运行时给结构体分配内存是顺序地安排,align是顺序地递增的。
如上例,内存分布为: a b c d e
+*** ++++ ++****** ++++**** ++++++++ (+位为占有位,*为填补位)
- #pragma pack() 和sizeof
- #pragma pack() 和sizeof
- #pragma pack() 和sizeof
- #pragma pack() 和sizeof
- #pragma pack() sizeof()
- #pragma pack() 和sizeof
- #pragma pack 与 sizeof
- #pragma pack() 和sizeof
- #pragma pack,sizeof
- 关于sizeof与#pragma pack
- #pragma pack的使用(sizeof)
- #pragma pack() 和sizeof用法
- sizeof 与 #pragma pack(n)
- sizeof、内存对齐和#pragma pack
- sizeof、内存对齐和#pragma pack
- [转]20110413-#pragma pack() 和sizeof
- [收集]内存对齐、sizeof、#pragma pack(n)
- #pragma pack(push,1) (pop), sizeof
- CLR Via C#读书笔记——Finalize方法被调用的时机【2011-01-18】
- LoadRunner测试结果中的吞吐量相关知识
- 《C++设计新思维——泛型编程与设计模式之应用》读后感
- snd_kcontrol探究
- BCP 命令实现SQLServer数据批量转换(转载)
- #pragma pack,sizeof
- 推荐一些对计科专业学生有用的专业书(大家一起来补充)
- 电脑绑票?勒索软件肆虐俄罗斯
- 阿里巴巴公司DBA笔试题
- 20110116 About the prosody conversion from neutral speech to emotional speech
- 获取javaj运行时信息
- #ifdef __cplusplus extern "C" { #endif //一段代码 #ifdef __cplusplus } #endif
- 续:改善华为C8600通话音质之语音编码模式
- poj 1639 Picnic Planning