变量的内存分配

mike_cx 2002-01-31 04:25:34
我在一本书上看到了这样的描述:
全局变量和静态变量在定义(分配空间)时,将位模式清0,局部变量在定义时,分配的内存空间内容保持原样,故为随机数。
请问这句话什么意思,或者在那些书里可以查到他们的详细解释,谢谢!
...全文
159 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
TalentSprite 2002-02-01
  • 打赏
  • 举报
回复
看看!
mike_cx 2002-02-01
  • 打赏
  • 举报
回复
谢谢各位
d_selenite 2002-01-31
  • 打赏
  • 举报
回复
全局变量和静态变量是在编绎的时候就分配好的,在相应的位置全填了零,在实模式方式下就是:全局和静态是填在数据段里的零,而局部变量则是在需要时临时在堆栈段里分配的,其值就是分配的空间里原先的数据,所以是随机的
tmp2002 2002-01-31
  • 打赏
  • 举报
回复
接echolover的话, 局部变量赋值,还是在栈里分配空间!
echolover 2002-01-31
  • 打赏
  • 举报
回复
全局变量和静态变量在编译时如果是内建类型(如int,char。。)编译器会在data segment内为它们分配内存,并初始化为0,如果是自定义类型只分配内存空间,在进入main之前会调用constructor初始化它。而局部变量若不赋值,会在栈中分配,但不会初始化,保持上次用过的值。
x_danny 2002-01-31
  • 打赏
  • 举报
回复
全局变量和静态变量会自动初始化(只有一次),但局部变量不会自动初始化,因此使用时需特别小心。
jyc_nj 2002-01-31
  • 打赏
  • 举报
回复
是说全局变量在编译的时候会自动初始化,而局部变量是从栈里分配的内存空间,在超过它的有限范围后就给释放,可能会给多次分配,所以定义时不作变化,是乱数。
所以,你的局部变量在用前一定要自己完成附初值,而全局的不用,不过,定义时附初值是个好习惯。
cshchina 2002-01-31
  • 打赏
  • 举报
回复
全局变量和静态变量在定义时系统将其清0,
而局部变量系统是不会这样对待的
codfish 2002-01-31
  • 打赏
  • 举报
回复
全局变量和静态变量在定义赋初值,进行0初始化,
局部变量在定义时要自定义,否则是野变量,很危险哟!
如 int nRet;
可靠写法:int nRet=0;
三种变量分配位置有区别,编译器对其操作有区别.

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧