首页 > 代码库 > C/C++中避免系统的字节对齐
C/C++中避免系统的字节对齐
在定义了一个新的Struct后。
系统会按照一定的规则将新生命的类型变量进行字节对齐,如下结构体:
typedef struct Test{
int a;
char b[6];
}Test;
该结构体类型可能会被对齐为12个字节。
那么,在内存流和文件流操作中可能会出现这样的用法:
fwrite(strPtr,1,sizeof(Test)*len,fp);
事实上,被写入了len*12个字节,因为sizeof(Test)实际上不等于10,而是12。
那么,如下简单地操作可以避免在流操作中出现的一些问题:
char * cptr=(char *)malloc(size)
((Test *)cptr).a=0;
((Test *)cptr).b=str1;
cptr+=10;
........
剩下的各位自行发挥吧,只是稍微抛砖引玉了一下,纯现码的字,有什么不足一定要提出~。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。