title: Memory leak in C,C++; forgot to do free,delete
body: <p>We allocate memory in C using malloc and in C++ using new. I know that memory allocated must
  be freed or given back to OS using free in C and delete in C++.
  If I forgot to use free/delete after allocating memory, it means there will be memory leak.</p>
  
  <p>Now, my question is, is this memory leak only during the time period of execution of program; or is it permanent leak/loss or is it gained again once I restart the system ? What is the internal process actually ? What does memory leak/loss mean exactly? </p>
  
  <p>I would be very grateful if someone could explain this in detail or provide me with some nice references.</p>
  
  <p>UPDATE 1</p>
  
  <p>After reading some answers, I learnt that memory is given back to OS/system after program terminates, if that is so, why everyone needs to care so much about memory leak, and why preventing memory leak is very important ?</p>
  
  <p>UPDATE 2</p>
  
  <p>So, memory leak should be prevented so that the system doesn't crash due to lack of sufficient memory for allocation purposes ??</p>
  
  <p>UPDATE 3</p>
  
  <p>So, after reading all answers, I realized that memory leak is quiet important issues to prevent system crashes. But, for a beginner like me, how can I be sure if my program is completely free from memory leak. I try to do free,delete if I am using malloc,new but sometimes, it gets messy. Is there any tool or method which I can use to know if my program is doing any memory leak ?</p>
  
  <p>UPDATE 4</p>
  
  <p>After reading answers, I have now understood the importance of memory leak free code, less use of new/delete, more use of STL, learnt new stuffs like RAII,valgrind  and good programming practices.
  Thanks to all :)</p>