Estoy depurando un código para el Microchip PIC18F4520 usando el PROTEUS ISIS. El código fue compilado con el compilador C18. Hay un error muy loco en el código que no sé si es mi culpa o un problema de ISIS / PIC. La imagen siguiente muestra el problema.
En la función 'libre', antes de ejecutar la instrucción en la dirección 1004, la variable 'i' tiene el valor 0. Cuando se ejecuta la instrucción, la variable 'i' recibe mágicamente el valor 125.
El 'heap_status' es una variable global que no tiene enlace con la variable 'i'.
¿Por qué asignar un valor a 'heap_status' afecta la variable 'i'?
PS .: Cuando la función se ejecuta por primera vez, esto no sucede. El problema surge cuando la función se ejecuta por segunda vez.