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

一个基础题?

楼主shyuan(shyuan)2002-02-13 21:29:58 在 C/C++ / C语言 提问

Void   GetMemory2(char   **p,   int   num)  
   
  {  
   
  *p   =   (char   *)malloc(num);  
   
  }  
   
  void   Test(void)  
   
  {  
   
  char   *str   =   NULL;  
   
  GetMemory(&str,   100);  
   
  strcpy(str,   "hello");        
   
  printf(str);          
   
  }  
   
  请问运行Test函数为什么会memory   leak?  
   
  问题点数:20、回复次数:6Top

1 楼ken_henderson( )回复于 2002-02-13 21:39:31 得分 5

用了malloc之后没有free()啊,malloc在heap上分配内存所以要自己管理,malloc和free()应该是对出现的Top

2 楼ken_henderson( )回复于 2002-02-13 21:40:08 得分 0

c++里用new和delete是一样道理Top

3 楼songhtao(三十年孤独)回复于 2002-02-13 23:34:46 得分 0

没有释放内存Top

4 楼jinzhao2(金钊)回复于 2002-02-14 02:04:06 得分 5

不一定要free(不过这是坏习惯),代码在VC6(win2k)上调试无误Top

5 楼asliuyang(AK-47)回复于 2002-02-14 10:58:20 得分 5

函数申请的指针没有返回值。  
  这个函数没有作用啊Top

6 楼born_in70s(smiling)回复于 2002-02-14 17:20:45 得分 5

同意楼上的.  
   
  函数调用时,虽然str的地址被作为参数传递   (拷贝传递),但根据C编译器的常规,  
  在   GetMemory2   内被赋值的指针并不等于&str.    
   
  解决的办法:   或者把str定义成全局的,   或者修改   GetMemory2   的定义,返回  
  申请的指针就好了.  
   
  Top

相关问题

  • 基础问题!!
  • 基础问题!
  • 基础问题
  • 基础问题
  • 基础问题!
  • 基础问题
  • 基础问题
  • ??????基础问题!!!!!!!!!!!!!!!!!
  • 基础题
  • 基础问题

关键词

  • 函数
  • 指针
  • getmemory
  • malloc
  • str
  • free
  • char

得分解答快速导航

  • 帖主:shyuan
  • ken_henderson
  • jinzhao2
  • asliuyang
  • born_in70s

相关链接

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

广告也精彩

反馈

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