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