搜索
bottom↓
回复: 6

如何释放掉创建的动态数组

[复制链接]

出0入0汤圆

发表于 2009-8-26 14:57:51 | 显示全部楼层 |阅读模式
各位同仁帮帮忙,我在IAR下面写了一个需要利用动态数组存储数据的程序,存储发送完毕后再把动态数组释放掉。程序如下:

#define Key1  P26
#define Key2  P25
unsigned char *dynamic_p1 =NULL;
void main(void)
{
  unsigned char i,*dyn_p,*dyn_p1;
  unsigned int j;
  WDTE=0;
  Clock_inital();//---------------时钟模块初始话
  ADPC0=0X08;//-------------------置P2口为IO口
  PM26=1;
  PM25=1;
  __enable_interrupt();//---------中断使能
  dynamic_p1=(unsigned char *)malloc(6);//
   while(1)
      {
         if(Key1==0)
            for(j=0;j<65000;j++);
              if(Key1==0)
                 {
                  dyn_p= dynamic_p1;
                  for(i=0;i<10;i++)
                     {
                       *dyn_p=GPRS_send_data;
                        dyn_p++;
                     }
                                 
                 }
         
         if(Key2==0)
            for(j=0;j<65000;j++);
              if(Key2==0)
                 {
                  free(dynamic_p1);
                  }
         }
}
现在存在的问题是,可以把数据存入指针dynamic_p1指向的地址空间,但是在按Key2键后程序执行free(dynmaic_p1)语句后,先前dynamic_p1指向的空间里的数据没有释放掉,free函数没有起作用,为什么?还是我free函数用错了?那位比较熟悉的师兄指点一下,不胜感激!

出0入0汤圆

发表于 2009-8-27 09:35:59 | 显示全部楼层
你是怎么判断空间里的数据没释放掉的。
这个应该是释放空间吧,数据还会保持阿,除非后面把这块空间改掉了。
我也没试过,不过感觉好像是这样。

出0入0汤圆

 楼主| 发表于 2009-8-27 13:34:15 | 显示全部楼层
问题解决了,空间时释放掉了,但是释放掉的空间在没有重新被引用时,先前存储的数据还在里面。它占用的是存储器里面的“堆”区域。我把释放空间和空间里的数据是否被释放掉搞混淆了。

出0入0汤圆

发表于 2009-8-28 21:00:16 | 显示全部楼层
学习了。

出0入0汤圆

发表于 2009-10-24 11:53:47 | 显示全部楼层
学习下 。。。。

出0入0汤圆

发表于 2011-11-25 22:42:35 | 显示全部楼层
动态申请内存,学习了

出0入0汤圆

发表于 2012-2-24 10:53:12 | 显示全部楼层
动态申请内存有一个函数是自动把申请到的空间清零的,不过释放函数就没有。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-3 20:00

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表