一个关于C语言内存布局的有关问题

一个关于C语言内存布局的问题

今天看了一个例子:

C语言目标文件的内存布局  
int a = 0; //全局初始化区,data段  
static int b=20; //全局初始化区,data段 
char *p1; //全局未初始化区.bss段 

 我觉得第二句和第三句是没有问题的,但是第一句中的a是存储在data段中吗?
 好像只有赋了非0的值才存储在data段中吧。
 像
int a;
 int a=0;
应该都存储在bss段中。因为你对一个全局变量定义但不赋值,系统会自动把它填0.
c语言 内存 布局 全局变量

------解决方案--------------------
这要看你代码的,你这么局限的说,是不对的@!
------解决方案--------------------
- -话说没理解楼主的意思
------解决方案--------------------
与编译器优化有关
------解决方案--------------------
我顶楼主,,或许那个例子的说法有问题
------解决方案--------------------
《Windows PE权威指南》