Re: Memory Managment (copys??)
Re: Memory Managment (copys??)
- Subject: Re: Memory Managment (copys??)
- From: Will Mason <email@hidden>
- Date: Sun, 6 Feb 2005 11:19:16 -0800 (PST)
- Comment: DomainKeys? See http://antispam.yahoo.com/domainkeys
> > 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.
Cheers,
Will
_______________________________________________
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