初级会员
- 积分
- 88
- 金钱
- 88
- 注册时间
- 2015-5-26
- 在线时间
- 0 小时
|
5金钱
#include<includes.h>
#define TASK_STK_SIZE 512
OS_STK STARTTASK[TASK_STK_SIZE];
OS_STK MYTASK[TASK_STK_SIZE];
OS_STK YOUTASK[TASK_STK_SIZE];
OS_STK HERTASK[TASK_STK_SIZE];
OS_MEM *PMEM;
INT8U MEM[8][6];
INT8U err;
INT8U *BLKP; //内存块指针
OS_MEM_DATA MEMDATA;
char *s;
char *s1="mytask is running!";
char *s2="youtask is running!";
char *s3="hertask is running!";
void starttask(void *p);
void mytask(void *p);
void youtask(void *p);
void hertask(void *p);
void main(int args, char *argss[])
{
OSInit();
 MEM=OSMemCreate(MEM,8,6,&err);
OSTaskCreate(starttask,NULL,(OS_STK *)&STARTTASK[TASK_STK_SIZE-1],(INT8U)0);
OSStart();
}
void starttask(void *p)
{
p=p;
OSTaskCreate(mytask,NULL,(OS_STK *)&MYTASK[TASK_STK_SIZE-1],(INT8U)3);
OSTaskCreate(youtask,NULL,(OS_STK *)&YOUTASK[TASK_STK_SIZE-1],(INT8U)4);
OSTaskCreate(hertask,NULL,(OS_STK *)&HERTASK[TASK_STK_SIZE-1],(INT8U)5);
while(TRUE)
{
OSTimeDlyHMSM(0,0,3,0);
}
}
void mytask(void *p)
{
INT8U TIME;
p=p;
TIME=0;
while(TRUE)
{
OS_Printf("%s\t",s1);
BLKP=(INT8U *)OSMemGet(PMEM,&err);
OSMemQuery(PMEM,&MEMDATA);
s=(char *)MEMDATA.OSFreeList;
OS_Printf("%0x\t",s);
OS_Printf("%d\n",MEMDATA.OSNUsed);
if(TIME>4)
{
OSMemPut(PMEM,BLKP);
TIME=0;
}
TIME++;
OSTimeDlyHMSM(0,0,1,0);
}
}
void youtask(void *p)
{
p=p;
while(TRUE)
{
OS_Printf("%s\t",s2);
BLKP=(INT8U *)OSMemGet(PMEM,&err);
OSMemQuery(PMEM,&MEMDATA);
s=(char *)MEMDATA.OSFreeList;
OS_Printf("%0x\t",s);
OS_Printf("%d\n",MEMDATA.OSNUsed);
OSMemPut(PMEM,BLKP);
OSTimeDlyHMSM(0,0,2,0);
}
}
void hertask(void *p)
{
p=p;
while(TRUE)
{
OS_Printf("%s\t",s3);
BLKP=(INT8U *)OSMemGet(PMEM,&err);
OSMemQuery(PMEM,&MEMDATA);
s=(char *)MEMDATA.OSFreeList;
OS_Printf("%0x\t",s);
OS_Printf("%d\n",MEMDATA.OSNUsed);
OSMemPut(PMEM,BLKP);
OSTimeDlyHMSM(0,0,2,0);
}
}
这3个任务分别是Mytask Youtask Hertask。在应用程序中创建一个动态内存分区
该分区有8个内存块,每个内存块的长度是6字节。应用程序的任务Youtask Hertask都在任务运行后请求一个内存块.
随后就释放它;任务MYTASK也在任务运行后请求一个内存块,但是要在任务MYTASK运行6次后,才释放它所申请的内存块。
为了了解内存分区变化的情况,编写代码来观察分区头指针和已被使用内存块的个数。
但是我明明释放了内存,为什么他显示内存使用一直是递增的,而且但最后会卡住? |
|