use*_*802 1 c++ memory memory-management memory-pool
除了建立内存池系统,我不能在应用程序启动时为每个对象分配巨大的数组并使用它们,在极端情况下,某些对象确实需要比其实例更多的实例,所以该数组只会增加一倍或四倍的大小,所以它将再也无法达到最大大小。我需要的速度比内存还多,所以我认为这是一个公平的权衡吗?
您所描述的与内存池之间的唯一区别是,通常,池分配器在内存用尽时会分配一个新池,如果内存用尽,您将重新分配整个数组。这将导致最坏情况下的运行时大大增加,并且您需要一个避免在重新分配时使指针和引用无效的方案,这可能会降低整个程序的性能。
池分配器中最坏的情况是空间不足,必须分配新的数组。在分配器中最坏的情况是,它用完了,必须分配一个更大的新数组,并将所有旧对象复制到新数组中。显然,后者将花费更多时间。