?? memtest.c
字號:
/*
* ======== memtest.c ========
*/
#include <std.h>
#include <log.h>
#include <mem.h>
#include "memtestcfg.h"
#define NALLOCS 2 /* 每一個存儲段中分配的個數 */
#define BUFSIZE 128 /* 每個存儲段分配的大小*/
extern Int SEG0; /* 外部變量,存儲段的名字為SEG0*/
static Void printmem(Int segid); /* 用來顯示內存分配與釋放情況的函數*/
/*
* ======== main ========
*/
Void main()
{
LOG_printf(&trace, "memtest example started.\n"); /* task運行時需要調用的函數*/
}
/*
* ======== initTask ========
*/
Void initTask()
{
Int i;
Ptr ram[NALLOCS]; /*ram重的指針數組*/
LOG_printf(&trace, "before allocating ...");
/*顯示SEG0存儲段在分配前的狀態*/
printmem(SEG0);
LOG_printf(&trace, "allocating ...");
/* 下一段程序用來分配一段內存空間 */
for (i = 0; i < NALLOCS; i++) {
/*在SEG0段分配大小為128byte的存儲空間,
*并返回該存儲段的首地址存于ram數組中*/
ram[i] = MEM_alloc(SEG0, BUFSIZE, 0);
LOG_printf(&trace, "seg %d: ptr = 0x%x", SEG0, ram[i]);
}
LOG_printf(&trace, "after allocating ...");
/*打印分配好內存空間的存儲段SEG0*/
printmem(SEG0);
/*釋放剛剛在SEG0段分配的128B空間 */
for (i = 0; i < NALLOCS; i++) {
MEM_free(SEG0, ram[i], BUFSIZE);/* free函數中的參數必須和allocate函數中的參數完全一致*/
}
LOG_printf(&trace, "after freeing ...");
/*打印釋放完空間的SEG0存儲段的狀態*/
printmem(SEG0);
LOG_printf(&trace, "Test Complete");
}
/*
* ======== printmem ========
*/
static Void printmem(Int segid)/*用來顯示segid存儲段狀態的函數*/
{
MEM_Stat statbuf;
MEM_stat(segid, &statbuf); /*調用bool類型的存儲器狀態函數;當segid段的存儲區available時,MEM_stat返回true,否則返回0*/
LOG_printf(&trace, "seg %d: O 0x%x", segid, statbuf.size);/*打印存儲段號SEG0和存儲段的大小*/
LOG_printf(&trace, "\tU 0x%x\tA 0x%x", statbuf.used, statbuf.length);/*打印存儲段SEG0用過的大小和存儲塊中連續空間的長度*/
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -