Dos variables memory pueden señalar el mismo array

Piezas geométricas conectadas como un recorrido de reglas, ilustración creada con IA
Ilustración conceptual creada con IA; no representa una red o medición real.

Asignar un array a otra variable puede parecer una copia independiente. En Solidity, esa intuición depende de las ubicaciones de datos implicadas y debe comprobarse antes de interpretar una modificación.

La documentación sobre ubicación y asignación distingue copias y referencias. Una asignación entre variables memory que representan arrays puede conservar una referencia al mismo contenido, en lugar de crear otro array independiente.

Imagina una lista didáctica [3, 8]. Si una segunda variable memory referencia esa misma lista y cambia su primer elemento a 5, leer la primera variable puede mostrar también [5, 8]. Lo importante no son los nombres distintos de las variables, sino el contenido al que apuntan.

Dibuja referencias, no dos cajas por costumbre

Escribe los nombres de ambas variables y une cada uno con la misma caja de elementos. Después dibuja un caso que sí realiza una copia según las reglas documentadas. La diferencia visual ayuda a prever qué lectura cambiará.

No conviertas el ejemplo en la afirmación de que todas las asignaciones de arrays se comportan igual. Storage, memory y calldata tienen reglas distintas, y una estructura más compleja puede añadir matices.

Si haces una prueba local, registra la versión del compilador y las ubicaciones declaradas. Compara los valores antes y después de una sola modificación. Esa prueba limitada responde a una pregunta concreta; no demuestra que un contrato completo sea seguro ni que todas sus copias estén diseñadas correctamente.

Visual: ilustración editorial.