Memory leak happens when create dynamic Memory but doesn’t release :)
Means when we don’t use free .
int *ptr = malloc(N);
// and we don't use `free(ftr)`
function Memory Leak
A common mistake of Memory leak happens when we create dynamic Memory inside function and forget to free it.
void func(){
int *ptr;
ptr = malloc(sizeof(*ptr));
/// ..... rest code
/// we should free ptr end of its uses.
}
Reallocation Memory leak
We can often forget to free old pointer and set null which is better practice.
int *newPtr = realloc(ptr,10);
if (newPtr == NULL){
printf("failed to allocated\n");
}else {
printf("reallocated\n");
// we can assign and free new `ptr`
ptr = newPtr;
free(newPtr);
}