error de asignación de variable rara PIC18

0

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.

    
pregunta

1 respuesta

1

Sin ver su código es difícil dar consejos (su captura de pantalla es demasiado pequeña para leer). Lo que ve se puede atribuir normalmente a la memoria dinámica o variables automáticas cuando, en cierto punto, el depurador (erróneamente) le mostrará la ubicación de la pila ocupada previamente por una variable definida dentro de una función. Mueva el código dentro de una función para ver si hace una diferencia.

    
respondido por el Oleg Mazurov

Lea otras preguntas en las etiquetas