rt_malloc和rt_free 和 malloc free 类似,是用来在堆上分配内存的,RT-Thread中是用小内存法来实现的。下面程序就是不停分配内存和释放内存,并打印分配到的内存首地址。
程序:
#include <rtthread.h>
struct rt_thread thread1;
static rt_uint8_t thread1_stack[512];
static void thread1_entry(void *parameter)
{
int i,j;
char *ptr[20];
for (j = 0; j < 20; j++)
ptr[j] = RT_NULL;
for (i = 0; i < 2; i++)
{
for (j = 0; j < 20; j++)
{
ptr[j] = rt_malloc(1 << j);
if (ptr[j] != RT_NULL)
{
rt_kprintf("get memory: 0x%x.\n", ptr[j]);
rt_free(ptr[j]);
ptr[j] = RT_NULL;
}
}
}
}
int rt_application_init()
{
rt_thread_init(&thread1,
"thread1",
thread1_entry, RT_NULL,
&thread1_stack