|
各位同仁帮帮忙,我在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函数用错了?那位比较熟悉的师兄指点一下,不胜感激! |
|