CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C++ 语言

常量字符串是写在静态内存中的嘛?

楼主byyyyy(苦行僧【苦】)2003-12-03 23:47:11 在 C/C++ / C++ 语言 提问

char   *GetString2(void){ char   *p   =   "hello   world"; return   p;}  
  void   Test5(void){ char   *str   =   NULL; str   =   GetString2(); cout<<   str   <<   endl;}  
   
  函数Test5运行虽然不会出错,但是函数GetString2的设计概念却是错误的。因为GetString2内的“hello   world”是常量字符串,位于静态存储区,它在程序生命期内恒定不变。无论什么时候调用GetString2,它返回的始终是同一个“只读”的内存块。  
  问题点数:5、回复次数:4Top

1 楼liquanle()回复于 2003-12-04 01:16:59 得分 1

我感觉不是静态存储区的。而是只读形式的。Top

2 楼CAT323(CAT323)回复于 2003-12-04 01:22:04 得分 2

我查了书,C++程序设计语言(特别版),书上只是说字符串文字量(也就是常量拉)是静态分配的,让函数直接返回字符串常量是安全的;而且还说保存这个字符串常量的存储区在函数调用之后并不会丢掉;  
   
  这里并没有说它是存储在静态存储区,这个不敢肯定;不过应该是分配在静态存储区的;这样才能起到保护作用。  
  Top

3 楼liquanle()回复于 2003-12-04 01:24:52 得分 1

因为他没有作别的用处呢,所以一直显示的还是这个值。Top

4 楼timepalette(时间调色板)回复于 2003-12-06 15:09:57 得分 1

"hello   word"   的确在.rdata段里Top

相关问题

  • 在程序中直接使用字符串常量如"abc"到底会不会引起内存泄漏??
  • 关于字符串常量数组
  • 有关字符串常量的疑惑。
  • 如何定义长字符串常量?
  • 未结束的字符串常量?
  • 字符常量是以ASCII码值保存在内存单元的,那么字符串常量是不是也是呢?
  • 数据库连接字符串经常要从web.config中读出,能不能够定义一个公共常量单元比如CommonVar.cs,将连接字符串作为静态常量放在该单元中供其他
  • 怎样用define定义一个常量字符串?
  • 小菜问题,怎样将字符串转换成常量名
  • 用const怎样定义定长字符串常量

关键词

  • getstring2
  • str
  • char

得分解答快速导航

  • 帖主:byyyyy
  • liquanle
  • CAT323
  • liquanle
  • timepalette

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo