1

我不能在应用程序开始时为每个对象分配巨大的数组并使用它们,而不是创建内存池系统,在极端情况下,某些对象确实需要比数组更多的实例,数组只会加倍或四倍大小,所以它永远不会再达到最大大小。我需要速度而不是内存,所以我认为这是一个公平的权衡?

4

1 回答 1

5

您所描述的内容与内存池之间的唯一区别是,通常,池分配器会在内存不足时分配一个新池,如果内存用完,您会重新分配整个数组。这将导致最坏情况运行时间大大增加,并且您需要一个方案来避免在重新分配时使指针和引用无效,这可能会降低整个程序的性能。

池分配器中最坏的情况是当它用完空间并且必须分配一个新数组时。分配器中最坏的情况是,它用完并且必须分配一个新的更大的数组并将所有旧对象复制到新数组中。显然后者将花费更多时间。

于 2012-11-26T19:42:45.600 回答