如何将RT-Thread的堆区大小设置得像长尾词一样冗长复杂?
- 内容介绍
- 相关推荐
本文共计1727个文字,预计阅读时间需要7分钟。
一、利用栈区空间的堆区作为堆区,查看我之前笔记的小伙伴都知道,以前我是通过申请栈区空间的堆区使用的,感兴趣的小伙伴可以看我之前的笔记,如RT-Thread移植到STM32。在board.c文件中,...
一、利用栈区的空间作为堆区看过我之前的笔记的小伙伴都知道,以前我是通过申请栈区的空间使用的,感兴趣的小伙伴可以看我之前的笔记,RT-Thread移植到stm32。
在board.c文件文件中的代码如下所示:
#if defined(RT_USING_USER_MAIN) && defined(RT_USING_HEAP)
#define RT_HEAP_SIZE 1024
static uint32_t rt_heap[RT_HEAP_SIZE]; // heap default size: 4K(1024 * 4)
RT_WEAK void *rt_heap_begin_get(void)
{
return rt_heap;
}
RT_WEAK void *rt_heap_end_get(void)
{
return rt_heap + RT_HEAP_SIZE;
}
#endif
从上面的代码中可以看出,申请了一个栈空间rt_heap数组,大小为4K。但是这样在使用RT-Thread堆内存的时候就不太友好了。缺点如下:
-
堆内存大小是固定的,使得RT-Thread系统没有最大化的利用STM32的内存空间。
-
在RT-Thread的堆内存中使用了相应的内存算法,容易造成内存碎片化。
本文共计1727个文字,预计阅读时间需要7分钟。
一、利用栈区空间的堆区作为堆区,查看我之前笔记的小伙伴都知道,以前我是通过申请栈区空间的堆区使用的,感兴趣的小伙伴可以看我之前的笔记,如RT-Thread移植到STM32。在board.c文件中,...
一、利用栈区的空间作为堆区看过我之前的笔记的小伙伴都知道,以前我是通过申请栈区的空间使用的,感兴趣的小伙伴可以看我之前的笔记,RT-Thread移植到stm32。
在board.c文件文件中的代码如下所示:
#if defined(RT_USING_USER_MAIN) && defined(RT_USING_HEAP)
#define RT_HEAP_SIZE 1024
static uint32_t rt_heap[RT_HEAP_SIZE]; // heap default size: 4K(1024 * 4)
RT_WEAK void *rt_heap_begin_get(void)
{
return rt_heap;
}
RT_WEAK void *rt_heap_end_get(void)
{
return rt_heap + RT_HEAP_SIZE;
}
#endif
从上面的代码中可以看出,申请了一个栈空间rt_heap数组,大小为4K。但是这样在使用RT-Thread堆内存的时候就不太友好了。缺点如下:
-
堆内存大小是固定的,使得RT-Thread系统没有最大化的利用STM32的内存空间。
-
在RT-Thread的堆内存中使用了相应的内存算法,容易造成内存碎片化。

