zoukankan      html  css  js  c++  java
  • 3.c语言结构体成员内存对齐详解


    一.关键一点

    最关键的一点:结构体在内存中是一个矩形,而不是一个不规则形状

     二.编程实战

     1 #include <stdlib.h>
     2 #include <stdio.h>
     3 
     4 struct A
     5 {
     6     int a;
     7     char b;
     8 };
     9 
    10 int main()
    11 {
    12     struct A a;
    13     a.a = 1;
    14     a.b = 1;
    15     printf("%p
    ", &a);
    16 
    17     system("pause");
    18 }
    结构体代码

    我们可以看到前四个字节是int a的 后四个字节是 char b的 虽然只用了前面一个字节 后面三位都用cc给替代了

    如果在结构体中再定义一个char变量,则继续多分配的内存中的后一个字节 还是八个,(按最大的单位进行对齐)

    还有就是如果改了顺序,则内存也变了

    三.几个例子

    这是这个结构体的内存大小为12

    再举个列子:

    求这个结构体大小

    为十二个字节,这里有个有意思的地方,当short放到小单位里面是要以两个字节对齐,所以放在后面的两个字节中

  • 相关阅读:
    fstest
    iozone
    fio
    vdbench
    饼状图点击凸出,适合颜色选择
    个人常用的win7快捷键
    form表单提交数据
    jquery允许跨越获取cookie
    设置滚动条样式与监听滚动到底部
    设置滚动条样式与监听滚动到底部
  • 原文地址:https://www.cnblogs.com/xiaochi/p/7992832.html
Copyright © 2011-2022 走看看