全局变量和静态变量一般存储在读写段,不赋值自然存储在bss段,但是如果赋值为0的话存储在bss段,而不是读写段。
测试程序:
#include <stdio.h>
int global_a0=0;
int global_a1=1;
int global_anull;
int main(){
static int static_b0=0;
static int static_b1=1;
static int static_bnull;
printf("global_a0: %p\n",&global_a0);
printf("global_a1: %p\n",&global_a1);
printf("global_anull:%p\n",&global_anull);
printf("static_b0: %p\n",&static_b0);
printf("static_b1: %p\n",&static_b1);
printf("static_bnull:%p\n",&static_bnull);
return 0;
}
内存形态如下:
这里我们不讨论堆栈,那是存储局部变量的地方,上面程序在64位机器编译的