Hola
Las condiciones del while eran:
Código PHP:
while ( $anioAux <= $anioFin && $mesAux <= $mesFin ){
El único cambio que haces a $anioAux es $anioAux-- por lo tanto la primera parte de la condición siempre es verdadera.
Luego en $mesAux el único cambio que haces es:
Código PHP:
if( $mesAux > 12 ){
$anioAux--;
$mesAux = 12;
}
Y si suponemos que $mesFin es igual a 12, cuando $mesAux lo alcanza, o sea, es igual a 13, dentro del if lo vuelves a dejar en 12, por lo tanto nunca sobrepasará a $mesFin.
Y el error es simplemente porque se ejecuta un loop infinito, la líne del error da lo mismo.
Lo contradictorio eso sí, es que el problema es de memoria, y el mensaje de error dice "try to allocate 35bytes" lo que es mucho menor que el máximo que son "536870912", esto es porque php indica los bytes procesados en la línea que sobrepasa el máximo:
Código PHP:
$datos[$i] = 0;
pero no el total de bytes utilizados. Esto puede llevar a un enredo o error.
Suerte
Sotelio