结构体
    结构体是使用struct定义的结构。
    定义结构体的时候会涉及到结构体对齐问题。
    虽然浪费了字节,但得益于内存对齐,存取速度会更快。这是结构体对齐的基础。
    image.png
    联合体
    联合体定义和结构体类似,但数据会复用同一块内存。
    image.png
    程序执行时的内存布局主要如下:
    1.栈区
    存储参数值、局部变量,维护函数调用关系等
    2.堆区
    动态内存区域,随时申请和释放,程序自身要对内存泄漏负责
    3.全局区(静态区)
    存储全局和静态变量
    4.字面量区
    常量字符串存储区
    5.程序代码区
    存储二进制代码
    image.png
    栈的变量是局部的,随着局部空间的销毁而销毁,由系统负责。
    堆的变量可以提供全局访问,需要自行处理其生命周期。