CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

realloc的问题~~~~

楼主gujianfei1979(谷谷)2005-08-04 08:49:54 在 VC/MFC / 基础类 提问

大家帮忙看看,为什么我一执行到realloc函数时就会报异常?  
   
  char*   ff;  
  char*   fb;  
  int   MAX_LEN   =   1000;  
   
  ff   =   (char*)malloc(   MAX_LEN   );  
  fb   =   ff;  
   
  if(   (   fp   =   fopen(   "aa.eml",   "r"   )   )   ==   NULL   )  
  {  
  printf(   "文件打开出错!\n"   );  
  }  
  flen   =   0;  
  *ff   =   fgetc(   fp   );  
  while(   *ff   !=   EOF   )  
  {  
  flen++;  
  if(   flen   ==   999*n   )  
  {  
  fb   =   (char*)realloc(   fb,   MAX_LEN+1000*n   );       //这里异常  
  ff   =   fb   +   999*n;  
  n++;  
  }  
  ff++;  
  *ff   =   fgetc(   fp   );  
  if(   *ff   ==   0x0a   )                     //  
  {                                                     //     这2个if不  
  *ff   =   0x0d;               //加的话,上面  
  }                                                     //realloc函数  
   
  if(   *ff   ==   0x0d   )                     //就不出现异常.  
  {                                                     //  
  ff++;                           //  
  *ff   =   0x0a;               //  
  }                                                     //  
  } 问题点数:100、回复次数:6Top

1 楼DentistryDoctor(不在无聊中无奈,就在沉默中变态)回复于 2005-08-04 08:58:58 得分 0

n=?  
   
  Top

2 楼dirdirdir3(风)回复于 2005-08-04 09:05:55 得分 0

会不会是当ff是最后一个的时候,刚好==0x0a的话就会出现ff指针溢出了。Top

3 楼VCSQLVB(深谷清音(谁知还是难脱俗尘))回复于 2005-08-04 09:09:35 得分 0

n初始了吗?不然会很大的。Top

4 楼vcmute(BCare4 H1Rest Good9!)回复于 2005-08-04 09:18:29 得分 0

ff++;     的时候应该也加   flen++;    
  加后同时判断if(   flen   ==   999*n   )..  
  Top

5 楼newbiestar()回复于 2005-08-04 09:39:42 得分 0

这个代码的问题好多啊……  
   
  从while(*ff   !=   EOF)就有问题了,对于char来说EOF还是-1,这样话,就会提前造成文件读取的结束。  
   
  另外你没有判断在读取到0x0a,变成0x0d   0x0a时候如果存贮发生在fb[MAX_LEN+n*1000-1]时候造成的越界访问。  
   
  并且if(   flen   ==   999*n   )这个应该是if   (flen   ==   (1000*n   -1)),否则你后面写入的时候都会多余一个字节,这个只有在n   ==1的时候才拥有正确地语义,否则就是浪费了……Top

6 楼newbiestar()回复于 2005-08-04 09:40:58 得分 0

另外,你的那两个if从语义、语法上面都没有错误,问题不在这里……Top

相关问题

  • malloc & realloc
  • realloc奇怪问题
  • 关于realloc的问题
  • 新手的问题之一:realloc()
  • 怎么用new,实现realloc函数
  • 关于malloc和realloc的问题
  • 高分提问有关 realloc 函数的问题。!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1!
  • 高分提问一个有关函数 realloc 的问题。!!!!!!!!!!**********!!!!!!!!!!!!
  • 如何在C++ 中实现函数 realloc(),具体代码如下:
  • ★★★★★突然想到一个realloc的使用问题,请指教!★★★★★★

关键词

  • flen
  • realloc
  • ff
  • fb
  • 时候
  • 问题
  • eof
  • fp
  • len
  • max

得分解答快速导航

  • 帖主:gujianfei1979

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

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