title: Why use NSAutoreleasePool?
body: <p>Consider the following program:</p>
  
  <pre><code>int main (int argc, const char * argv[]) { 
      NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; 
      // Insert code here... 
      NSLog(@"Programming is Fun !"); 
      [pool drain]; 
      return 0;
  }
  </code></pre>
  
  <p>I don't understand why <code>pool</code> is needed there as the same program can be also written as this:</p>
  
  <pre><code>int main (int argc, const char * argv[]) { 
      NSLog(@"Programming is Fun !"); 
      return 0;
  }
  </code></pre>
  
  <p>What is a purpose of using an auto release pool? Why and when do we need them? Are they mandatory in every objective C program?</p>
  
  <p>If i don't want to auto release any object, do I also need to use an Auto Release pool ?</p>