您现在的位置: 爱51代码网 >> 范文 >> 文章正文
#pragma pack(1) 取消默认对齐有什么意义
意义是什么? 长度少于10个字!

节省了内存,降低了效率。
这玩意不能用哈,会影响所有接下来的结构,必须是#pragma pack(push, 1)
举个例子来解释吧
struct
{
char ch;
int     flag;
}A;
使用默认对齐,假设4字节对齐,显然0字节存储ch,接下来1,2,3字节是对齐字节,第四字节才是flag。
如果我要把A的内容通过网络发送给客户端,客户端是不知道我机器的对齐字节的,这样的话,虽然对方知道我的结构定义,但是会出现解析错误问题。因为我们不能假设对方也使用和自己机器一样的字节对齐方式。这个道理和大小端是一个概念。说白了,必须传输连续的字节流,中间不能夹带无意义的信息。
当然了,如果我不跨网络,或者进程传输。那是不是说这样做就没有意义了。
也不尽然,不使用字节对齐可以节省空间,但是访问速率上就降低了。
还有个双方约定好字节对齐方式的功能。
  • 上一篇文章:

  • 下一篇文章: 没有了
  • 最新文章 热点文章 相关文章
    SecureCRT如何访问虚拟机vmWare中
    C#如何读取WINDOWS的放大系数
    cximge的图如何存入数据库并提取
    DBGRID控件显示查询结果文本类型
    TChart控件如何把表中右边的系列
    fastreport提示没有找到fr_class
    linux下编译faac及faad2提示 rec
    accept无法获取客户端ip
    TClientDataSet如何避免多人更新
    如何用delphi代码修改XML节点
    TClientDataSet如何避免多人更新
    如何用delphi代码修改XML节点
    vc++ pvoid *用delphi怎么表达
    GIS用百度行政区域的经纬度直接画
    不小心卸载了.net 4 extend,vs2
    C#byte【】里的数转换成string时
    C#的session取不到值
    java如何判断一个字符串里的数字
    随机找出24个不一样的字,在把一
    java怎么实现html转为pdf
    android进程与c++进程间如何
    SecureCRT如何访问虚拟机vmW
    安装Ubuntu 12.04.4_desktop
    shell script代码$只后为什么
    linux下编译faac及faad2提示
    accept无法获取客户端ip
    linux 安装jdk,java命令无法
    linux usb转串口代码
    shell 命令如何从post 数据接
    gdb7.7调试无法直接输出vect
     



    设为首页 | 加入收藏 | 网站地图 | 友情链接 |