Further, variables aren't automatically initialized (ie set to a specific value).
Where in your code you put the declaration of the variable can change the ORDER of the variables in RAM so if, like Charlie says, you're somewhere writing outside of an array it's possible that the order in which the variables are declared makes important variables get corrupted in one case and not so important varaibles get corrupted in the other. In either case you have a potential problem that you need to find - provided that IS indeed what's happening of course.
For example
Code:
SMS VAR BYTE 160
Index VAR BYTE
SMS[160] = "A"
Classic error there, arrays are zero indexed so the last element of the SMS array is SMS[159]. In this case Index will be assigned the value "A" because Index is declared right after the SMS array. Now, that might not ALWAYS be the case depending on where it all ends up relative to RAM banks and such.
Try to cut the code down to a minimal that still shows the error and post it.
/Henrik.
Bookmarks