`
linguanghuan
  • 浏览: 3976 次
社区版块
存档分类
最新评论

内存对齐初探

 
阅读更多

test.c

 

#include <stdio.h>

struct stu{
        char sex;
        int length;
        char name[10];
};

int main()
{
        char name[10];
        struct stu mystu;
        printf("size of char:%d\n", sizeof(char));
        printf("size of int: %d\n", sizeof(int));
        printf("size of char[10]:%d\n", sizeof(name));
        printf("size of stu:%d\n", sizeof(mystu));

        return 0;
}

 

 

运行结果 
[zxnms@/home/zxnms]$gcc -o test test.c
[zxnms@/home/zxnms]$./test
size of char:1
size of int: 4
size of char[10]:10
size of stu:20

主意: 这里的stu不是应该返回1+4+10 = 15吗?

 

结果分析:

gcc默认按四个字节对齐

struct stu{
        char sex;
        int length;
        char name[10];
};

sex 1个字节不足4个字节,补足4个字节

length 4个字节

name 8个字节,剩余两个字节:2 不足4个字节

总: 4 + 4 + 8 + 4 = 20

 

 

分享到:
评论

相关推荐

    PE文件格式之win32应用程序初探[定义].pdf

    - **节对齐** 和 **文件对齐**:决定了节在文件和内存中的对齐方式,影响内存占用和执行效率。 4. **节头表**:列出了文件中的所有节,每个节头包含节的名字、大小、在文件中的偏移量以及在内存中的虚拟地址等信息...

    gun c 与 ascii 的重要区别

    ### gun c 与 ASCII 的重要区别:初探 Linux 内存管理 在深入探讨 Linux 内存管理前,我们先澄清一点,标题中的“gun c”实际上是指 GNU C 编译器(GCC),而非枪支(gun)或任何与之相关的主题。本文将围绕 GNU C ...

    nginx入门指南

    - 解释Nginx中用于内存对齐的宏,以优化内存访问速度。 **4. Nginx的内存池管理分析(a)** - 分析Nginx内存池管理机制的工作原理。 - 讨论如何有效地管理内存资源。 **5. Nginx的内存池管理分析(b)** - 继续探讨...

    弹球小游戏

    《弹球小游戏——C++游戏编程初探》 在计算机科学领域,游戏开发是一项充满挑战与乐趣的任务。本文将深入探讨一款由C++语言编写的弹球小游戏,它揭示了C++在游戏编程中的基本应用,以及开发者在初次尝试游戏编程时...

    Python源码剖析笔记

    结构体的初始化可以使用不同的方式,需要注意的是,结构体的大小不仅取决于其成员的类型和数量,还可能因为对齐要求而增加填充字节。柔性数组成员是一种特殊的结构体成员,它可以使得结构体在内存中动态扩展。 ####...

    Nginx 应用技术指南

    介绍Nginx如何通过宏定义实现内存对齐,提高内存访问效率。 **15.4 Nginx的内存池管理分析(a)** 分析Nginx内存池管理机制,了解它是如何有效管理内存分配和释放的。 **15.5 Nginx的内存池管理分析(b)** 继续深入...

    Android Applications (1) Introduction to the Development.pdf

    - **数据访问灵活性**:支持非对齐数据访问以及混合端数据访问,这不仅简化了数据共享和软件移植的过程,还有助于节省内存空间。 #### 五、商业产品案例 S3C6410处理器被广泛应用于各种商业产品中,包括但不限于: ...

    python基础

    - 字符串格式化中对齐和填充的控制。 - 复杂数据结构的格式化展示。 #### Python第17课:类型转换 - **知识点**: - 不同数据类型之间的转换。 - 类型转换函数如`int()`、`float()`、`str()`的用法。 - 转换...

Global site tag (gtag.js) - Google Analytics