c - 分配一个大块而不是许多小块?

标签 c memory-management

我正在读取一个 2 MB 的单词列表,内存中大约有 200 000 个单词。为了能够索引它们,我使用了 char * 数组。由于单词不会增大或缩小,将整个文件读入一个内存块并让指针指向该内存块,而不是对每个单词都执行 malloc() 是否更好?

最佳答案

与目前发布的一些评论相反,如果您的内存紧张,您应该分配一个大块。这是因为您执行的每个 malloc() 都有一些或多或少固定的开销。这种开销将是每个分配的几个字节,因此许多小的分配可能会使您失去一半的内存开销。

如果你非常关心性能(速度),你也应该使用单一分配。它将提高局部性和缓存利用率,并减少启动和拆卸期间的系统调用次数。

关于c - 分配一个大块而不是许多小块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26141903/

相关文章:

c - 一个简单的 C XML 解析器

c - 为什么这个程序中printf的用法是错误的?

ios - Segues 并从内存中清除历史 ViewControllers

ios - 内存泄漏 - UIImagePNGRepresentation

ios - 导航弧内存未释放

c# - 是否可以将 C 引用添加到 Objective-C 绑定(bind)?

c - 我怎样才能将其转换为双向链表?

c - Raspberry PI 中的幂函数

iOS 应用程序内存警告

c - 函数返回 char 指针