首页 > 解决方案 > 在 C 中创建单独的堆

问题描述

我正在开发一个执行大量动态内存分配的函数,但是,如果此函数超过时间阈值,则计时器将触发。因此,我们需要释放启动此函数时分配的所有内存。

当我们进入函数时,我们使用第三方工具来创建一个堆池。因此,任何动态内存分配都来自这个堆池。如果计时器触发,我们只需释放这个堆池,代码继续使用它之前的堆池(它就像一堆池)。

由于成本原因,我们需要停止使用这个第三方工具。

有没有人有解决这个问题的想法来替换这个第三方工具?

注意:它不是多线程系统。

提前致谢。

标签: cmallocheap-memorydynamic-memory-allocation

解决方案


您可以从堆中获取大内存块并编写自己的分配器和释放器。如果计时器触发,您可以释放整个块。

当然,这需要深入了解 malloc 和 free 的工作原理。您将需要知道内存头中存储的信息方式和内容。


推荐阅读