Viendo un script hoy, me surgió una duda.

Si yo tengo un código que inicializa un arreglo(array o vector) de elementos que vaya aumentando de 2 o en 2 ( o cualquier aumento > 1) tal como esto:

[GML]


for(var i=0; i<100; i+=2)
                array = i;
[/GML]

entonces... mi pregunta es: ¿se crean las posiciones intermedias?

Dicho de otra manera, se crean con el bucle for las posiciones:
array[0]=0, array[2]=2, array[4]=4

pero que sucede con las posiciones intermedias?

tales como array[1], array[3]... y así en lo sucesivo
Qué sucede con ellas? se inicializan? nunca se crean? están ahi ocupando memoria?


esa es mi duda, saludos  :D




Sí, las posiciones intermedias se crean. Con un valor de 0.
Esto ya que los arrays reservan las posiciones anteriores no declaradas asignándole ese valor. Mejor dicho, con el ciclo estarías haciendo esto:
[gml]
array[0] = 0;
array[1] = 0;
array[2] = 2;
array[3] = 0;
array[4] = 4;
array[5] = 0;
array[6] = 6;
...
[/gml]
alaberga regué el café.

BA:STFW&RTFM

ah, vale
eso soluciona mi duda XD básicamente si quisiera evitar ese cierto desperdicio de memoria, sería más conveniente usar ds_list o alguna de esas listas dinamicas?



Puedes cambiar el ciclo de esta forma para no dejar espacios vacíos:
[gml]
for( i=0; i<100; i+=1 ) array = i*2;
[/gml]