I have some code where I open a file and store it in a malloc'd location with 'char *p' as the pointer. After reading the data I need from there, I call the same routine a second time. This time the data is mostly there but some of it seems to be offset in memory. I think what caused the problem is I had forgotten to free() the original file pointer, *p, but when I call it a second time, shouldn't *p be reassigned a different pointer to an entirely different area? Should the code still work (ignoring memory leak issues and so on)?