char *pVariable = (char*)0xWHATEVER; /* Compiler sees a variable with value 0xWHATEVER but might not realise it will be used to store data */ unsigned long anotherVariable; /* Compiler sees a variable and chooses a location to put it in. What if the location overlaps pVariable? */