我正在读取一个 2 MB 的单词列表,内存中大约有 200 000 个单词。为了能够索引它们,我使用了 char *
数组。由于单词不会增大或缩小,将整个文件读入一个内存块并让指针指向该内存块,而不是对每个单词都执行 malloc()
是否更好?
最佳答案
与目前发布的一些评论相反,如果您的内存紧张,您应该分配一个大块。这是因为您执行的每个 malloc()
都有一些或多或少固定的开销。这种开销将是每个分配的几个字节,因此许多小的分配可能会使您失去一半的内存开销。
如果你非常关心性能(速度),你也应该使用单一分配。它将提高局部性和缓存利用率,并减少启动和拆卸期间的系统调用次数。
关于c - 分配一个大块而不是许多小块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26141903/