1.程序段
存放程序代码的一段区域,程序段是只读的
2.数据段
存放已经初始化的全局变量,属于静态内存分配
3.bss段
BSS(Block Started by Symbol)存放程序中未初始化的全局变量和静态变量
4.堆
保存进程中被动态分配的内存
#include <stdlib.h>
void *malloc(size_t size);
void free(void *ptr);
void *calloc(size_t nmemb, size_t size);
void *realloc(void *ptr, size_t size);
5.栈
存储程序中临时创建的局部变量,函数调用,参数入栈,出栈过程也在栈中完成
6.static
静态局部变量:局部变量的数值就是上一次调用之后的数值
静态全局变量:只能在本程序中使用这个全局变量
7.register
寄存器变量:和编译器相关,这个变量会被频繁的使用,被保存到寄存器中,不能对寄存器变量取地址&
8.volatile
不稳定,易变的,使用volatile修饰的变量其数值可能会发生改变
使用场景:
多进程,多线程,共享数据
硬件寄存器0x12345678
一个中断服务子程序中使用的非自动变量