C程序在内存的分布&关键字修饰变量

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
一个中断服务子程序中使用的非自动变量

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章