全局初始化变量/全局未初始化变量/全局静态变量/局部变量的存储位置,作用域,与生命周期

版权声明:欢迎转载,注明出处 https://blog.csdn.net/youyou519/article/details/82701083

比如如下程序代码片段

int a = 0; 
char *p1; 
static int x = 10;
int main(void) 
{ 
    int b = 0; 
    char s1[] = "123"; 
    char *p2; 
    char *s2 = "123"; 
    static int c =0; 
    p1 = (char *)malloc(128); 
    p2 = (char *)malloc(256); 
    free(p1); 
    free(p2); 
    return 0; 
} 
变量类型 存储空间 作用范围 生命周期
a 全局初始化变量 .data 整个工程 程序运行周期
p1 全局未初始化变量 .bss 是0 整个工程 程序运行周期
x 全局静态变量 .data 当前文档(避免命名冲突) 程序运行周期
b 局部变量 函数内部 函数运行周期
s1 局部变量 函数内部 函数运行周期
p2 局部变量 函数内部 函数运行周期
s2 局部变量 函数内部 函数运行周期
c 静态局部变量 .data 函数内部 程序运行周期

静态区
.data:全局初始化的变量
.bss:全局未初始化变量
.rdata:全局只读

全局变量同一个文件中先定义先初始化,不同不确定

猜你喜欢

转载自blog.csdn.net/youyou519/article/details/82701083
今日推荐