Estructura de datos para la asignación dinámica de memoria.

12

Piense en el modelo de sonda celular. ¿Existe una estructura de datos que pueda asignar fragmentos contiguos de memoria de cualquier longitud (como, por ejemplo, malloc en C), y liberarlos, evitando la segmentación de la memoria, y ejecuta todas las operaciones en el peor momento determinista O (log n) donde n es el tamaño total de la memoria?

Al evitar la segmentación de la memoria, quiero decir que si el número total de celdas libres es F, entonces debería poder asignar un segmento contiguo de celdas F o aproximadamente células F.

Manu
fuente

Respuestas:

6

Incluso sin el límite de tiempo, es imposible "evitar la segmentación de la memoria" a menos que pueda mover los objetos asignados, como en un recolector de basura compacta. Ver "límites Para algunas funciones relativas a la asignación dinámica de almacenamiento" de Robson, que muestra que la asignación de bytes en bloques de tamaño entre n y N requiere Ω ( m log ( N / n ) ) bytes de memoria.mnNΩ(mlog(N/n))

Además, el sistema de amigos logra este límite y se puede hacer en tiempo logarítmico.

jbapple
fuente
Gracias por la referencia Permito mover los objetos asignados (de lo contrario, parece bastante fácil encontrar un mal ejemplo). ¿Se aplica el límite inferior que mencionas?
Manu
m
O(logn)