Re: Immediate memory release
Re: Immediate memory release
- Subject: Re: Immediate memory release
- From: Yannick De Koninck <email@hidden>
- Date: Wed, 30 Apr 2008 14:09:04 +0200
I deleted everything that was between NSImage* tempSource = [[NSImage
alloc] initWithContentsOfFile:sPath[i]; and [tempSource release]; so
basically this is the code (sPath is a NSString array containing path
names):
-(IBAction)Generate:(id)sender
{
for (i = 0; i < count; i++)
{
NSImage* tempSource = [[NSImage alloc]
initWithContentsOfFile:sPath[i]];
[tempSource release];
}
}
And still the same problem occurs. So the problem is that the memory
is not immediately released. You think this can be solved by using an
autoreleasepool? I'm pretty new to cocoa programming and i never used
autoreleasepools before.
Thank you very much, Yannick
On 29 Apr 2008, at 13:44, Paul Bailey wrote:
Of course, if that's the case, simply wrapping the whole section of
code with its own autorelease pool will cause the memory to be
released at the end of each iteration.
Paul
On Tue, Apr 29, 2008 at 12:37 PM, Graham Cox
<email@hidden> wrote:
It sounds like something in "some code" is also retaining tempSource
(probably autoreleasing it), so that the release at the end of the
loop is not actually releasing, but the subsequent release of the
autorelease pool at the end of the event is doing so.
So without "some code" it's hard to say what that could be.
G.
On 29 Apr 2008, at 9:30 pm, Yannick De Koninck wrote:
Hi everybody,
I am writing an application where, at some point in time, the user
clicks a button and for a great amount of images the average pixel
values are calculated and stored in an array.
Basically this looks like this:
-(IBAction)Generate:(id)sender
{
// some code
for (i = 0; i < count; i++)
{
NSImage* tempSource = [[NSImage alloc]
initWithContentsOfFile:sPath[i]];
// some code
[tempSource release];
}
}
When debugging with ObjectAlloc i found that the memory release does
not happen when the release message is sent but only after the
Generate function is done. So instead of allocating, deallocating,
allocating, deallocating... the application keeps allocating memory
and only releases it afterwards. This becomes a big problem when the
amount of loaded pictures rises. Is there a way to force the memory
manager to free the memory when the release message is sent instead
of after the call? Or can i solve this problem in another way?
Thank you very much,
Yannick, Belgium
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden