码迷,mamicode.com
首页 > 编程语言 > 详细

C/C++中避免系统的字节对齐

时间:2014-06-29 23:36:49      阅读:388      评论:0      收藏:0      [点我收藏+]

标签:文件      问题   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;

........


剩下的各位自行发挥吧,只是稍微抛砖引玉了一下,纯现码的字,有什么不足一定要提出~。


C/C++中避免系统的字节对齐,布布扣,bubuko.com

C/C++中避免系统的字节对齐

标签:文件      问题   c++   c   一个   

原文地址:http://blog.csdn.net/xiaoy_h/article/details/35355427

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!