关于"如果常量的值在编译时已知就不需要分配空间"

Proteas 2008-03-19 09:57:25
如题,不分配存储空间,那把值放哪里.不理解这句话.
...全文
115 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Treazy 2008-03-19
  • 打赏
  • 举报
回复
.text
.data
.bss
......
Proteas 2008-03-19
  • 打赏
  • 举报
回复
原来是放到代码段了.
ryfdizuo 2008-03-19
  • 打赏
  • 举报
回复
在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。
栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等。
堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。
自由存储区,就是那些由malloc等分配的内存块,他和堆是十分相似的,不过它是用free来结束自己的生命的。
全局/静态存储区,全局变量和静态变量被分配到同一块内存中,在以前的C语言中,全局变量又分为初始化的和未初始化的,在C++里面没有这个区分了,他们共同占用同一块内存区。
常量存储区,这是一块比较特殊的存储区,他们里面存放的是常量,不允许修改(当然,你要通过非正当手段也可以修改,而且方法很多)
shc7478 2008-03-19
  • 打赏
  • 举报
回复
常量的值保存在代码段,和代码在一起,若需要取得该数据,需要访问代码段。
汇编语言里解释得更清楚,更具体一些。
paidfighting 2008-03-19
  • 打赏
  • 举报
回复
编译器干的事情,它在任何用到该常量的地方用该值替代就完成了

64,676

社区成员

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

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