分配一个大块而不是很多小块?

时间:2014-10-01 12:55:50

标签: c memory-management

我正在阅读一个2 MB的单词列表,内存大约有20万个单词。为了能够索引它们,我使用char *数组。由于单词不会增长或缩小,最好是将整个文件读入一个内存块并让指针指向那个,而不是为每个单词执行malloc()

1 个答案:

答案 0 :(得分:5)

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

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