zoukankan      html  css  js  c++  java
  • C语言之字节对齐

    1.什么是字节对齐

    • 一个变量占用n个字节,则该变量的起始地址必须是n的整数倍。即(存放起始地址%n=0)
    • 如果是结构体,那么结构体的起始地址是结构体中最宽的那个成员的整数倍
    • 是一种牺牲空间换取时间的策略

    2.不按照字节对齐

    当对空间要求较高的时候,可以通过#pragma pack(n)来改变结构体成员的对齐方式:

    #include<stdio.h>
    
    void main() {
        #pragma pack(1)    // 开始标志 这行代码表示这行下面的成员字节对齐方式不按照默认的来了
        struct Test {
            char a;
            int b;
        };
        #pragma pack()       // 结束标志
    
        return;
    }
    • #pragma pack(n)中n用来设置变量以n字节对齐方式(取值有:1,2,4,8)
    • #pragma pack()用来取消强制对齐方式
    • 最终的结构体的宽度是N(最宽的成员与n对比比较小的的那个)的整数倍
  • 相关阅读:
    Linux
    Python
    Linux
    Python
    爬虫
    WEB
    法正(13):密谋
    法正(12):张松
    法正(11):入川
    法正(10):袍哥
  • 原文地址:https://www.cnblogs.com/codexlx/p/13430417.html
Copyright © 2011-2022 走看看