• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Memory Managment (copys??)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Memory Managment (copys??)


  • Subject: Re: Memory Managment (copys??)
  • From: Thomas Davie <email@hidden>
  • Date: Sun, 6 Feb 2005 19:32:32 +0000

NSMutableArray* array = [[NSMutableArray alloc] init];
SOMEObject* object;
int i;

for (i = 0; i < 10; i++)
{
    object = [[SOMEObject alloc] init];
    [object setSomeProperty: i];
    [array addObject: object];
    [object release];
}
/* Do something with the array */
[array release];

This code will leak. You should replace the first line in the for loop with:

    object = [[[SOMEObject alloc] init] autorelease];

You need to make sure that any local objects  you use are (retain,
alloc, copy) / (autorelease, release) balanced.

Sorry, but it looks like you overlooked something. There are exactly 10 alloc's for the variable "object" and exactly 10 releases for it. There is exactly one alloc for the variable "array" and 1 release for it. If I replace the line as you suggest there will be 20 releases (10 releases and 10 autoreleases for the variable "object"), which will cause a seg fault, as there are only 10 alloc's.

There are no leaks in that code.
I agree that there are no leaks, but there are 21 retains and 21 releases in the code.
The array is retained when you alloc it.
Each object is retained when you alloc it.
Each object is retained when you add it to the array
Each object is released when you release it
Each object, and the array is released when you release the array.


Bob
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Cocoa-dev mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden


  • Follow-Ups:
    • Re: Memory Managment (copys??)
      • From: Will Mason <email@hidden>
References: 
 >Re: Memory Managment (copys??) (From: Will Mason <email@hidden>)

  • Prev by Date: Re: Memory Managment (copys??)
  • Next by Date: Re: Memory Managment (copys??)
  • Previous by thread: Re: Memory Managment (copys??)
  • Next by thread: Re: Memory Managment (copys??)
  • Index(es):
    • Date
    • Thread