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

pot*_*bie 1 c memory-management

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

Joh*_*nck 5

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

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