我正在阅读一个2 MB的单词列表,内存大约有20万个单词。为了能够索引它们,我使用char *
数组。由于单词不会增长或缩小,最好是将整个文件读入一个内存块并让指针指向那个,而不是为每个单词执行malloc()
?
答案 0 :(得分:5)
与目前发布的一些评论相反,如果内存紧张,则应分配一个大块。这是因为你做的每个malloc()
都有一些或多或少固定的开销。这种开销将是每个分配几个字节,因此许多小分配可能会使你的内存损失一半而不是开销。
如果你非常关心性能(速度),你也应该使用单一分配。它将改善位置和缓存利用率,并减少启动期间和拆卸时的系统调用次数。