CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
(图)邪恶的韩国UMPC 使用 Java 编写数据库应用新规范
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

问一个简单的关于内存问题,困扰我很久了

楼主pig_2000()2006-12-01 17:33:58 在 VC/MFC / 基础类 提问

如果动态生成一段内存  
  char*   pTest   =   new   char[2000];  
  ...  
  重新指向地址  
  pTest   =   &pTest[1000];  
  那么之前的1000内存,系统会自动回收吗?  
  如果  
  delete   pTest;  
  会不会有1000内存泄露?  
  问题点数:40、回复次数:8Top

1 楼sgnaw(李逍遥)回复于 2006-12-01 17:48:44 得分 5

有内存泄露啊   .Top

2 楼alfwolf(木马煞)回复于 2006-12-01 17:49:48 得分 10

当然是会有泄露的,不过,楼主,你的代码写得不对.  
  有两个错误,首先你通过被修改的指针来释放内存会导致非法的内存访问.所以你也不必担心内存泄露你不知道.  
  其次你的删除的方式也不对,delete   []   pTest;Top

3 楼qianld(会淹死的鱼)回复于 2006-12-01 17:51:01 得分 0

应该不会!  
  char*   pTest   =   new   char[2000];  
  可以假设自动分配了地址0-1999  
  而你pTest   =   &pTest[1000];指令只是将pTest[1000]的地址放在了地址0的位置,即地址0的数据是999;  
  delete   pTest;后又将0-1999地址释放了!  
  所以不会泄露!  
  只是理论上推算!  
  具体还要实践!Top

4 楼bobob(静思)回复于 2006-12-01 17:56:12 得分 5

会有泄露  
  释放方式不对Top

5 楼pig_2000()回复于 2006-12-01 17:59:46 得分 0

其实是这样的,我要对一快很大的内存数据进行处理,需要清除前面一些数据  
  正常情况是申请一块tmp内存,进行数据拷贝,然后删除原先的内存,最后把tmp的地址赋予原先的指针。  
  可是这样就多一步数据copy的过程,我想知道有没有好的办法来避免这一步额外的计算。  
  Top

6 楼pig_2000()回复于 2006-12-01 18:12:52 得分 0

这样可不可以  
   
  char*   pTest   =   new   char[2000];  
  char*   tmp   =   pTest;  
   
  pTest   =   &pTest[1000];  
  .....  
  ....  
  ....  
   
  pTest   =   tmp  
   
  delete   []pTest;  
  Top

7 楼liuqiyc(cyiquil)回复于 2006-12-01 19:24:06 得分 10

楼上可行  
   
  下面这样也行  
  char*   tmp   =   new   char[2000];  
  char*   pTest   =   tmp;  
   
  pTest   =   &tmp[1000];  
  .....  
  ....  
  ....  
   
  delete   []tmp;Top

8 楼Stefine(CSDN最菜滴猩猩)回复于 2006-12-01 20:38:58 得分 10

char*   tmp   =   new   char[2000];  
  char*   pTest   =   tmp;  
   
  pTest   =   &tmp[1000];  
  .....  
  ....  
  ....  
   
  delete   []tmp;  
  tmp   =   NULL;  
  pTest   =   NULL;  
   
  总感觉浪费了   1000  
   
  PS:   切忌delete[]   temp后再使用pTest(尽管大家都晓得,也注明下)Top

相关问题

关键词

得分解答快速导航

  • 帖主:pig_2000
  • sgnaw
  • alfwolf
  • bobob
  • liuqiyc
  • Stefine

相关链接

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

广告也精彩

反馈

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