如何将RT-Thread的堆区大小设置得像长尾词一样冗长复杂?

2026-04-11 13:030阅读0评论SEO资源
  • 内容介绍
  • 相关推荐

本文共计1727个文字,预计阅读时间需要7分钟。

如何将RT-Thread的堆区大小设置得像长尾词一样冗长复杂?

一、利用栈区空间的堆区作为堆区,查看我之前笔记的小伙伴都知道,以前我是通过申请栈区空间的堆区使用的,感兴趣的小伙伴可以看我之前的笔记,如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的堆区大小设置得像长尾词一样冗长复杂?

一、利用栈区空间的堆区作为堆区,查看我之前笔记的小伙伴都知道,以前我是通过申请栈区空间的堆区使用的,感兴趣的小伙伴可以看我之前的笔记,如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的堆内存中使用了相应的内存算法,容易造成内存碎片化。

阅读全文