首页 > 解决方案 > 在 C 中使用内存池(嵌入式系统)

问题描述

我正在为嵌入式系统(内存非常有限的 mcu Cortex-M4 < 32KB)编写一段代码,在该系统中,我需要在非常短且已定义的时间内使用大块内存,并且我想使用某种内存池,所以内存不会浪费在一生中运行一次或两次的功能和操作上。

我做了一些努力,但我想我想更多地了解内存池并更好地重写我的代码。

我看到了一些示例,其中使用指针指向下一个可用的空闲块,但我不明白如何处理这些类型的池。

在此处输入图像描述

例如,我不能strstr在内存池中使用总字符串会分成多个块的内存池。我需要逐块读取并将总字符串存储到一个更大的数组中以进行进一步的处理。如果我错了,请纠正我。

所以,如果我做对了,如果我有一个 1024 字节的内存池,每个块有 32 个字节长,总共给了我们 32 个块。如果我想存储一个总长度为 256 个字符(字节)的字符串,我需要 8 个块,但如果我想读取字符串,我需要将这 8 个块复制到 256 个字符数组中。

我错过了什么吗?

标签: cmemoryembeddedpool

解决方案


推荐阅读