正真的常量存储在哪里?

xiaoge2030 2017-09-19 09:47:52
例如:int a=1 中的1存储在哪里呢?
之前看C++的内存模型时,知道了堆,栈,bss和数据段中存放对象的区别。但是好奇真正的常量‘1’存在哪里?请大神指教一下
...全文
427 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ForestDB 2017-09-19
  • 打赏
  • 举报
回复 1
3 int a = 1; => 0x080483e1 <+6>: c7 45 fc 01 00 00 00 movl $0x1,-0x4(%ebp) 这里的1被翻译成指令中的立即数(x86)为例,所以它会是code段一部分。
  • 打赏
  • 举报
回复
引用 4 楼 xiaoge2030 的回复:
[quote=引用 1 楼 zjq9931 的回复:] const存放在数据段。 汇编语言中有一段const段的。
刚百度百科看了一下左值与右值。里面有句话说:右值是可以出现在赋值表达式右边的表达式,他可以是不占据内存空间的临时变量或子面量。 这里的意思应该就是说像‘1’这种字面量是不占内存空间的吧,而你说的const段,是放在哪里呢?[/quote]
引用 4 楼 xiaoge2030 的回复:
[quote=引用 1 楼 zjq9931 的回复:] const存放在数据段。 汇编语言中有一段const段的。
刚百度百科看了一下左值与右值。里面有句话说:右值是可以出现在赋值表达式右边的表达式,他可以是不占据内存空间的临时变量或子面量。 这里的意思应该就是说像‘1’这种字面量是不占内存空间的吧,而你说的const段,是放在哪里呢?[/quote] .const段的一些说明: http://www.cnblogs.com/awpatp/archive/2009/11/15/1603270.html 如果想详细了解最好学Win32汇编了。 当然这是windows下的常量方法,我不知道linux,unix下是不是这么干的。 我个人其实了解的也不多,如果有不对的地方,欢迎各位朋友指正。 另外一个问题吧:还有就是不占用变量,并不是不占用内存,否则这些值从哪里来,总要存在内存的一个地方啊。
3m2u 2017-09-19
  • 打赏
  • 举报
回复
int a=1 这里的1编译后在可执行程序代码里啊。 编译是把文本的代码转成机器码的过程。机器指令包括把某个寄存器置成某个数值的基本操作。 而比如你定义个char s[]="12345" 类似这样的是没有直接的操作的。 需要存到代码的数据段,载入内存后放到堆里栈里。 程序执行的时候是把对应的指针(地址)更新到寄存器里进行访问的。
大米粥哥哥 2017-09-19
  • 打赏
  • 举报
回复
这里的右值不占内存 相当于汇编的立即数 常量是占内存的 详情百度 const 常量
xiaoge2030 2017-09-19
  • 打赏
  • 举报
回复
引用 1 楼 zjq9931 的回复:
const存放在数据段。 汇编语言中有一段const段的。
刚百度百科看了一下左值与右值。里面有句话说:右值是可以出现在赋值表达式右边的表达式,他可以是不占据内存空间的临时变量或子面量。 这里的意思应该就是说像‘1’这种字面量是不占内存空间的吧,而你说的const段,是放在哪里呢?
xiaoge2030 2017-09-19
  • 打赏
  • 举报
回复
引用 1 楼 zjq9931 的回复:
const存放在数据段。 汇编语言中有一段const段的。
就是字面值常量存储在const段?
自信男孩 2017-09-19
  • 打赏
  • 举报
回复
1被称为字面值常量。字面值常量的形式和值决定了常量的类型。例如0x42是16进制表示的整型常量。‘a'是char型字面值。字面值常量顾名思义由字面意思表示,是常量。字面值常量在程序中是直接表示的,整型直接写出大小,字符直接写出字符。一个字面值常量在编译时被直接解析为立即数,编译器内部维护字面值常量的类型.
paschen 版主 2017-09-19
  • 打赏
  • 举报
回复
也可能直接被编译器优化成了程序指令,也就是code区
  • 打赏
  • 举报
回复
const存放在数据段。 汇编语言中有一段const段的。
赵4老师 2017-09-19
  • 打赏
  • 举报
回复
http://edu.csdn.net/course/detail/2344 C语言指针与汇编内存地址-一.代码要素

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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