Possible Duplicate:
What REALLY happens when you don’t free after malloc?
When ending a program in C/C++, you have to clean up by freeing pointers. What happens if you doesn’t free the memory, like if you have a pointer to an int and doesn’t delete it when ending the program? Is the memory still used and can only be freed by restart, or is it automatically freed when the program ends? And in the last case, why free it, if the operating system does it for you?
When your program ends all of the memory will be freed by the operating system.
The reason you should free it yourself is that memory is a finite resource within your running program. Sure in very short running simple programs, failing to free memory won’t have a noticable effect. However on long running programs, failing to free memory means you will be consuming a finite resource without replenishing it. Eventually it will run out and your program will rudely crash. This is why you must free memory.