CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
英特尔®游戏设计大赛100美元现金周周送 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

delete指針問題。

楼主lypp(崆峒居士)2003-11-01 08:53:49 在 C/C++ / C语言 提问

typedef   struct   tagIMGMOVEPROPERTY  
          {  
          WORD         wIndex;  
          WORD         wImgQuantity;  
          char**     szImgfileName;  
          }   IMGMOVEPROPERTY;  
   
  m_AnimatorClamp*   IMGMOVEPROPERTY;  
   
  m_AnimatorClamp   =   new   IMGMOVEPROPERTY;    
  m_AnimatorClamp->szImgfileName   =   new   char*   [5];  
  for   (i=0;i<5;i++)  
          {  
          m_AnimatorClamp->szImgfileName[i]   =   new   char[10];  
          m_AnimatorClamp->szImgfileName[i][9]   =   '\0';    
          }      
   
  m_AnimatorClamp如何delete? 问题点数:50、回复次数:6Top

1 楼shenleng(冷雪)回复于 2003-11-01 09:01:05 得分 10

首先将指向结构中的指针所指位置释放掉,也就是首先释放二重指针的内部指针,然后外部指针,最后释放结构指针。否则会出现内存泄漏Top

2 楼lypp(崆峒居士)回复于 2003-11-01 09:07:35 得分 0

能否寫出代碼。Top

3 楼lypp(崆峒居士)回复于 2003-11-01 09:46:59 得分 0

upTop

4 楼robbie24(独行虾)回复于 2003-11-01 09:59:17 得分 10

个人认为...   应该将IMGMOVEPROPERTY由类来实现,放在destructor中来释放.   因为如果IMGMOVEPROPERTY的对象一多,可能会有点忙不过来,我的意思是说,可能会忘记如此复杂的先去释放这个,再释放那个.(笑),甚至,根本就忘记释放了~  
  Top

5 楼Wolf0403(废人:独活十年~心如刀割)回复于 2003-11-01 10:19:23 得分 15

m_AnimatorClamp->szImgfileName   =   new   char*   [5];  
   
  for   (int   i   =   0;   i   <   5;   i++)  
  {  
      delete   m_AnimatorClamp->szImgfileName[i];  
  }  
  delete   m_AnimatorClamp;  
   
  因为   szImgfileName   不是在构造函数分配的,不知道究竟有几个字符串,所以没法用析构函数释放,除非在结构中保存字符串的数量信息.Top

6 楼wangbinru(彬哥)回复于 2003-11-01 11:28:05 得分 15

m_AnimatorClamp   =   new   IMGMOVEPROPERTY在对上建立了对象,结束时要删除。  
  m_AnimatorClamp->szImgfileName   =   new   char*   [5];分配了一个具有5个元素的指针数组。每个元素只用来存储地址,它们分别指向由m_AnimatorClamp->szImgfileName[i]   =   new   char[10];分配的空间,所以删除时应按相反的顺序:  
  for   (int   i   =   0;   i   <   5;   i++)  
  {  
          delete   m_AnimatorClamp->szImgfileName[i];  
  }  
  delete   m_AnimatorClamp->szImgfileName;  
  delete   m_AnimatorClamp;  
  先删除m_AnimatorClamp->szImgfileName[i]   =   new   char[10];分配的空间;  
  再删除m_AnimatorClamp->szImgfileName   =   new   char*   [5];分配的空间;  
  最后删除m_AnimatorClamp   =   new   IMGMOVEPROPERTY;   分配的空间。Top

相关问题

  • delete this
  • delete this?
  • Delete指针时出错?
  • delete和delete[]是怎样处理的,都是指针,为何错用delete替delete[]就会崩?
  • 如何delete结构体指针?
  • delete问题,请位指点,谢谢
  • 求:怎样DELETE指定文件夹?
  • 关于指针被delete后的疑问?
  • 写DELETE触发器,DELETE不了指定记录,各位高手教教我
  • delete 和 delete []

关键词

  • 指针
  • 结构
  • animatorclamp
  • szimgfilename
  • imgmoveproperty
  • 释放
  • 删除
  • delete
  • 分配的空间
  • new char

得分解答快速导航

  • 帖主:lypp
  • shenleng
  • robbie24
  • Wolf0403
  • wangbinru

相关链接

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

广告也精彩

反馈

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