Memory
Free Memory
After a heap value has been read, free releases the storage back to the allocator.
Free Memory
free_memory.c
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int value = ;
int *ptr = (int *)malloc(sizeof(int));
if (ptr == 0) {
return 1;
}
*ptr = value;
int saved = *ptr;
free(ptr);
ptr = 0;
printf("released=%d value=%d\n", ptr == 0, saved);
return 0;
}
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int value = ;
int *ptr = (int *)malloc(sizeof(int));
if (ptr == 0) {
return 1;
}
*ptr = value;
int saved = *ptr;
free(ptr);
ptr = 0;
printf("released=%d value=%d\n", ptr == 0, saved);
return 0;
}
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int value = ;
int *ptr = (int *)malloc(sizeof(int));
if (ptr == 0) {
return 1;
}
*ptr = value;
int saved = *ptr;
free(ptr);
ptr = 0;
printf("released=%d value=%d\n", ptr == 0, saved);
return 0;
}
release
`free(ptr)` releases heap storage previously returned by `malloc`.
clear pointer
Setting the pointer to `0` after `free` avoids accidentally reusing the old address.