Las direcciones de memoria para matrices anónimas son naturalmente reutilizadas por perl. Como muestra este ejemplo, que un ciclo entre dos direcciones para las matrices vacías:¿Por qué Perl reasigna la memoria siguiendo este patrón?
$ perl -E "say [] for (1..6)"
ARRAY(0x37b23c)
ARRAY(0x37b28c)
ARRAY(0x37b23c)
ARRAY(0x37b28c)
ARRAY(0x37b23c)
ARRAY(0x37b28c)
me ocurrió con algunas teorías sobre por qué no podría reasignar la memoria inmediata, cuando me encontré con que el ciclo no es siempre dos direcciones largo. Los siguientes ciclos de ejemplos son 3 y 4.
$ perl -E "say [0] for (1..6)"
ARRAY(0x39b23c)
ARRAY(0x39b2ac)
ARRAY(0x39b28c)
ARRAY(0x39b23c)
ARRAY(0x39b2ac)
ARRAY(0x39b28c)
$ perl -E "say [0,0] for (1..6)"
ARRAY(0x64b23c)
ARRAY(0x64b2cc)
ARRAY(0x64b2ac)
ARRAY(0x64b28c)
ARRAY(0x64b23c)
ARRAY(0x64b2cc)
¿Cuál es la causa de esta peculiaridad de la gestión de la memoria?
¿Por qué te importa? –
@Jonathan, estoy implementando el cálculo de módulo;) Curiosidad. – Tim
Debe leer 'perldoc perlguts' y unirse a la lista de correo de Perl Porters http://lists.perl.org/list/perl5-porters.html – shawnhcorey