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

我应该怎么回收这样的内存

楼主cpp99(老土)2004-09-01 10:48:38 在 C/C++ / C++ 语言 提问

 
                  char   *pLot[BATCHNEWPART_MAX_LOT];  
   
  for(i=0;   i<BATCHNEWPART_MAX_LOT;   i++)  
  {  
  pLot[i]=new   char[LOTIDLEN+1];  
  memset(pLot[i],   0,   sizeof(pLot));  
  }  
   
                  .....  
   
  for(i=0;   i<BATCHNEWPART_MAX_LOT;   i++)  
  {  
  delete   pLot[i];     //这样写,运行过程中,似呼不行,我应该怎么写?  
  } 问题点数:0、回复次数:2Top

1 楼BAisNobody(前不见古人,后不见来者)回复于 2004-09-10 19:35:56 得分 0

内存写操作越界!   破坏了内存控制块,导致释放内存错误!  
   
  越界操作是   memset(pLot[i],   0,   sizeof(pLot));   导致的  
   
  sizeof(pLot)的值是   4   *   BATCHNEWPART_MAX_LOT   (如果指针变量是4个字节),  
  而不是你所期望的pLot[i]所指向的数组大小,不知道是你太粗心了呢还是  
  对数组和指针理解错误。  
   
  这里正确的初始化语句应该是   :    
  memset(pLot[i],   0,   sizeof(char)   *   (LOTIDLEN+1));  
  这样就正常了。  
   
   
   
   
  Top

2 楼jxhwei(工羊大盗)回复于 2004-09-10 23:30:25 得分 0

 
  delete[]   pLot;//在析构函数里这样写就可以了,for循环也可以不要Top

相关问题

  • 请问,j2me怎么手动回收内存?
  • 要立刻释放一个ArrayList的内存,让垃圾回收器马上将它回收该怎么做?
  • JAVA内存回收问题
  • 内存回收问题
  • tomcat 内存回收问题
  • tomcat 内存回收问题
  • 内存好像用1M扔1M不知道回收了,一直往上增长,怎么解决?
  • 内存问题--回收再利用?
  • 关于内存回收的问题。
  • CMap能不能自动回收内存

关键词

得分解答快速导航

  • 帖主:cpp99

相关链接

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

广告也精彩

反馈

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