If I have a c program, like:
SomeTypePtr my_type;
my_type = malloc(sizeof(someType));
/* do stuff */
free(my_type);
/* do a bunch of more stuff */
free(my_type);
Does the calling of ‘free’ for my_type do any harm? After I call free(my_type), does the pointer become a null pointer once again?
Deallocating a memory area with
freedoes not make the contents of the pointer NULL. Suppose that you haveint *a = malloc (sizeof (int))andahas0xdeadbeefand you executefree (a)then after executionastill contains0xdeadbeefbut after thefreecall this memory address is no more reserved for you. Something like you have rented a flat withmallocused for some time, returned the flat byfreethen you might have a duplicate key for the flat, but it is not reserved for you.Doing a
freeon an alreadyfreed memory will result in double free memory corruption.