zoukankan      html  css  js  c++  java
  • #pragma pack(n)的使用

    在缺省情况下,编译器为了让程序跑得跟快,减少CPU读取数据的指令周期,对结构体的存储进行了优化,

    比如:如下结构体

    struct s 

    {

    char ch;

    int i;

    };

    虽然变量ch本身只有1个字节,但实际上却占用掉了4个字节,为的是让第二个int型成员i的地址能够被4整除。因此实际占用的是8个字节,sizeof(s) = 8。

    一般地,可以通过下面的方法来改变缺省的对界条件:
    使用伪指令#pragma pack (n),C编译器将按照n个字节对齐。
    使用伪指令#pragma pack (),取消自定义字节对齐方式。

    比如:如下结构体

    #pragma pack(1)

    struct s 

    {

    char ch;

    int i;

    };

    #pragma pack()

    这样结构体实际占用了5个字节,sizeof(s)=5;

  • 相关阅读:
    Centos下 安装和测试kafka
    Java枚举
    Java 数组
    Java变量
    Java标识符
    Java修饰符
    java 基本语法
    Java 基础语法
    Java开发工具
    JAVA 发展历史
  • 原文地址:https://www.cnblogs.com/zhangnianyong/p/8489537.html
Copyright © 2011-2022 走看看