Saltar al contenido

Hay sitio lógico, pero no físico

Un vector contiene [12, 23, 31, 8]: longitud 4, capacidad 4. Quieres añadir 42. La región contigua pertenece a otra reserva; escribir allí dañaría datos ajenos.

El vector debe conseguir almacenamiento suficiente conservando el orden de sus valores. Una dirección antigua puede dejar de identificar un elemento válido después del cambio.

En la figura, la zona rayada es la reserva ajena que está justo a la derecha del vector.

Un vector lleno junto a datos ajenosCuatro celdas con 12, 23, 31 y 8 forman el bloque del vector, con longitud 4 y capacidad 4. A su derecha, justo donde iría el 42, hay una zona rayada: otra reserva con datos ajenos. Escribir allí los dañaría.bloque del vector: longitud 4, capacidad 412233180123otra reserva: datos ajenos42 necesita la posición 4
La posición 4 existe en la memoria, pero pertenece a otra reserva (zona rayada): hay sitio lógico, no físico.

Antes de continuar: escribe qué crees que debe cambiar y qué debe conservarse. Tu reflexión no se califica y desaparece al salir de esta página.

En este tema usamos elementos enteros y un modelo que siempre cambia de bloque al crecer. Un asignador real puede ampliar una reserva en su sitio. No representamos fallos de asignación ni constructores que lanzan excepciones.

Piensa qué harías cuando el bloque ya está lleno. Esta reflexión no se califica.