c - 当所需的总量未知时,给定时间 malloc 的最佳数量是多少?

标签 c memory-management malloc

我已经实现了一个多级缓存模拟器,它需要存储当前在模拟器中的值。使用当前配置,存储的所有值的最大大小可以达到 2G。显然,我不会假设这种最坏的情况并预先分配所有内存。相反,我将程序设置为根据需要分块分配内存。此分配的开销因以下事实而加剧:我正在calloc,以便在指定位置之前未发生写入时提供 0 值。

我的问题是,对于每次需要更多内存时应该分配多少内存,是否有一个很好的启发式方法?目前我使用的是任意值,我考虑过一些使用总系统内存比例的解决方案(我认为可以在编译和/或运行时动态检测到它),但即使是后者,我也在使用任意比例仍然不适合我。

任何对这种情况下最佳实践的见解都将不胜感激!

最佳答案

一个常见的经验法则是在每次重新分配时按几何级数增长,例如翻倍。

关于c - 当所需的总量未知时,给定时间 malloc 的最佳数量是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20369535/

相关文章:

c - 读取txt,使用链表计算每个字母表

c - 我仍然可以访问的内存在哪里(在对 C 程序进行 valgrind 内存检查之后)?

c - 为什么常量表达式不报错?

通过基指针的 C++ 显式析构函数调用

c - 释放已分配的内存,消除错误

c - C中链表的两个结构

c - Malloc 自定义类型和其他一些 C 问题

c - 丑陋的 C 结构分配的现代 C++ 模式

c++ - 你能从一个单独的程序中删除动态分配的内存吗?

c - c中的malloc函数?