c - 在 C 中创建单独的堆
问题描述
我正在开发一个执行大量动态内存分配的函数,但是,如果此函数超过时间阈值,则计时器将触发。因此,我们需要释放启动此函数时分配的所有内存。
当我们进入函数时,我们使用第三方工具来创建一个堆池。因此,任何动态内存分配都来自这个堆池。如果计时器触发,我们只需释放这个堆池,代码继续使用它之前的堆池(它就像一堆池)。
由于成本原因,我们需要停止使用这个第三方工具。
有没有人有解决这个问题的想法来替换这个第三方工具?
注意:它不是多线程系统。
提前致谢。
解决方案
您可以从堆中获取大内存块并编写自己的分配器和释放器。如果计时器触发,您可以释放整个块。
当然,这需要深入了解 malloc 和 free 的工作原理。您将需要知道内存头中存储的信息方式和内容。
推荐阅读
- sql - Azure SQL 超大规模中的跟踪标志
- python - 如何:在 ArchLinux / Raspbian / Volumio / Raspberry 上升级到 Python 3.8.5
- python - Python 控制流“倒退”而不是前进
- c++ - 使用 reinterpret_cast 存储带有 struct 对象的数据时,char 数组长度不正确
- laravel - 如何在laravel的url中隐藏id?
- node.js - nodemon crash - 应用程序崩溃 - 在启动前等待文件更改
- windows - 使用llvm-objdump在exe文件的反汇编中查找符号
- docker - 我已经安装了 docker 版本 19.03,在运行 docker 守护进程时,几天后容器被间歇性删除
- javascript - GIthub Api 获取用户每个 repo 的所有提交
- javascript - Converting Vanilla JS to Vue.js, querySelector, this issue