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