I suggest you run my code, on your system.
Do not start up leaks, start up Activity Monitor and watch your memory closely. If your system doesn't crash/hangs before you can stop it, then you will see that the app is consuming memory like the Americans are consuming oil. And according to me, my program respects the Memory Management rules. So I say there is a bug.

Filip van der Meeren
fi...@code2develop.com
http://www.sourceforge.net/projects/perlmanager
http://www.sourceforge.net/projects/xlinterpreter

On 14 Dec 2008, at 23:14, Ken Thomases wrote:

On Dec 14, 2008, at 4:01 PM, Filip van der Meeren wrote:

NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSNumber *n = nil;
NSInteger whaaaa = 0;

srand(time(NULL));
for(int i = 0; i < 100 * 1000; ++i)
{
        n = [[NSNumber alloc] initWithInt:rand()];
        if([n retainCount])
                ++whaaaa;
        [n release];
}
        
NSLog(@"Result: %d", whaaaa);
        
[pool release];

then you should be able to release it. OS X can't cache random numbers... I dumped the code above in a forloop, running 100,000 times... with random numbers to be inserted.
Memory-requirements started to go up, up and up...
And guess what the value of "whaaaa" was ? That is right: 100,000!

And you imagine this proves what, exactly?

Of course whaaaa is 100,000. What else could it be? Your "if([n retainCount])" will (and should) always evaluate to true.

With respect to a constantly increasing memory requirement, that doesn't contradict anything you're entitled to expect from memory management. Nobody made any promises to you that the allocation and initialization of an NSNumber instance did not allocate and then autorelease some intermediate objects. It has always been possible that loops like yours might accumulate autoreleased objects, even if you yourself are not autoreleasing objects (or using convenience constructors which often, but not always, return autoreleased objects).

Again, what were you trying to prove?

Regards,
Ken


_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

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:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to