关于变量地址问题,在main函数中定义了三个变量,为什么先定义的位于高地址,这些变量存在于栈上?

fredshao 2011-11-30 05:45:40
关于变量地址问题,在main函数中定义了三个变量,为什么先定义的位于高地址,这些变量存在于栈上?
...全文
280 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
yulinlang 2011-11-30
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 taodm 的回复:]

楼主,不同的编译环境下,可以先定义的位于高地址,也会先定义的位于低地址。
不要依赖这个,也不太值得讨论这个。
[/Quote]

是的,标准并没有规定定义顺序和存储位置的关系,不同的编译器可能采用不同的方式,不值得讨论这个。
AnYidan 2011-11-30
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 dizuo 的回复:]
栈是向下增长的。
[/Quote]

函数中定义的变量,在栈上,除非你用了const,static
taodm 2011-11-30
  • 打赏
  • 举报
回复
楼主,不同的编译环境下,可以先定义的位于高地址,也会先定义的位于低地址。
不要依赖这个,也不太值得讨论这个。
一鸣惊人 2011-11-30
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 flyskylover 的回复:]
栈的上面是是内核空间和环境变量,
堆的下面是全局变量等数据段,rodata段,代码段
栈和堆位于内核空间和数据段之间。
栈是向下生长的,
而堆是向上生长的
请看unix环境高级编程。好书一本。
[/Quote]
+
  • 打赏
  • 举报
回复
栈的上面是是内核空间和环境变量,
堆的下面是全局变量等数据段,rodata段,代码段
栈和堆位于内核空间和数据段之间。
栈是向下生长的,
而堆是向上生长的
请看unix环境高级编程。好书一本。
duke56 2011-11-30
  • 打赏
  • 举报
回复
ryfdizuo 2011-11-30
  • 打赏
  • 举报
回复
栈是向下增长的。
鲤鱼 2011-11-30
  • 打赏
  • 举报
回复
栈的增长方向为有高地址向低地址,
看下进程的内存空间分配
goldbeef 2011-11-30
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 woweiwokuang0000 的回复:]

栈的增长方向为有高地址向低地址,
看下进程的内存空间分配
[/Quote]++
shun_qizi_ran 2011-11-30
  • 打赏
  • 举报
回复
栈的增长方向为有高地址向低地址,
看下进程的内存空间分配
fredshao 2011-11-30
  • 打赏
  • 举报
回复
那什么样的变量定义后会先定义的位于低地址,后定义的在高地址,内存往高地址增长?
vilnies 2011-11-30
  • 打赏
  • 举报
回复
是的!

69,377

社区成员

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

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