CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

程序改错

楼主xiuren(xiuren)2006-03-09 18:20:37 在 C/C++ / C语言 提问

以下程序段错在哪儿?  
  char   *a(char   *c)  
  {  
        char   b[10];  
        ..........  
        ..........  
        return   b;  
  } 问题点数:20、回复次数:8Top

1 楼cuibo1123(月满C楼)回复于 2006-03-09 18:26:18 得分 3

...  
   
  b是局部变量(在栈区)!  
   
  函数结束后,栈内存会被释放!     所以     b就成了一个垃圾地址(因为b[]已经被释放了)~Top

2 楼citywanderer2005(流浪狗)回复于 2006-03-09 18:28:18 得分 3

退出该函数之后,栈内地址被释放,返回的指针指向的内容可能被改变了,如果输出数据的话,还可能引起程序崩溃Top

3 楼wqtl_357(Step By Step!)回复于 2006-03-09 19:06:54 得分 3

返回一个局部变量,离开函数体时它的生命周期结束,所以返回的指针变量指的实际上不存在的东西。  
   
  #include   <stdio.h>  
   
  void   main()  
  {  
  char*   test();  
   
  printf("%s\n",   test());  
  }  
   
  char*   test()  
  {  
  char   ch[]   =   "hello";  
  return   ch;  
  }Top

4 楼jixingzhong(瞌睡虫·星辰)回复于 2006-03-09 20:50:03 得分 2

返回栈指针   ....  
   
  把空间分配到   堆上去就可以了   ~  
        char   b[10];  
  改为  
        char   *b   =   (char   *)malloc(10);Top

5 楼jixingzhong(瞌睡虫·星辰)回复于 2006-03-09 20:53:09 得分 3

char   ch[]   =   "hello";    
  指针指向   常量区,  
  这样的方式可以得到   字符串,  
  但是意义不大,  
  因为没有可修改性   ...Top

6 楼Phable(FingerDancer)回复于 2006-03-09 21:11:10 得分 2

看看这儿吧,也许对你有帮助,我也遇到过  
  http://community.csdn.net/Expert/topic/4317/4317114.xml?temp=.3491938Top

7 楼sankt(宠辱不惊,看庭前花开花落;去留无意,望天空云卷云舒.)回复于 2006-03-09 21:29:16 得分 2

条款31:   千万不要返回局部对象的引用,也不要返回函数内部用new初始化的指针的引用  
   
  char   *a(char   *c)  
  {  
        char   b[10];  
        ..........  
        ..........  
        return   b;  
  }  
   
  b[]存放在栈上,离开函数就空间就释放了  
   
   
  Top

8 楼zixuan8083(C风破)回复于 2006-03-09 22:03:04 得分 2

char   ch[]   =   "hello";   分配在栈内存上,局部数组变量;  
  char   *ch   =   "hello";   "hello"为常量字符串,位于静态存贮区,它返回始终是同一个“只度”的内存块。Top

相关问题

  • java程序改错
  • 简单C程序改错求教
  • 又是一个简单的c程序改错!请赐教!
  • 简单的C程序错误-》关于对列的,帮改错
  • 帮白痴小虾米改改错误程序
  • 在表单提交时JC程序未得到完全执行, 改错求解
  • 连接两个串,程序不知道什么地方出错了!!!!!!请高手改错!!!!!!!!!
  • 改错误
  • 代码改错
  • sql改错

关键词

  • 函数
  • 指针
  • 内存
  • 程序
  • 返回
  • 释放
  • ch
  • hello
  • 区
  • char

得分解答快速导航

  • 帖主:xiuren
  • cuibo1123
  • citywanderer2005
  • wqtl_357
  • jixingzhong
  • jixingzhong
  • Phable
  • sankt
  • zixuan8083

相关链接

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

广告也精彩

反馈

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