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放到小单位里面是要以两个字节对齐,所以放在后面的两个字节中

  • 相关阅读:
    Palindrome Partitioning
    Minimum Path Sum
    Maximum Depth of Binary Tree
    Minimum Depth of Binary Tree
    Unique Binary Search Trees II
    Unique Binary Search Trees
    Merge Intervals
    Merge Sorted Array
    Unique Paths II
    C++ Primer Plus 笔记第九章
  • 原文地址:https://www.cnblogs.com/xiaochi/p/7992832.html
Copyright © 2011-2022 走看看