[MacOSX] - (NSString*) description; でメモリリーク?
MacOSXでツールを作っていたときに,Instrumentsでメモリリークテストをしているときに気付いた・・・.
私の間違いだと思うのだが,気になるのでブログでも書いて反応を見てみる.
環境:MacOSX10.5.3(9D34)
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; NSMutableArray* list = [NSMutableArray array]; int i; for( i = 0; i <20000; i++ ){ NSString *str = [NSString stringWithFormat:@"%04d" ,i]; [list addObject:str]; } NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:list, @"NSMutalbeArray", nil]; NSString *str = [dict description]; [pool release];
これを実行するたびに,少しずつメモリがリークしていく.[dict description]をコメントアウトすると,メモリリークは起こらない.
Instrumentsを使ってもLeakでは検出できず,ObjectAllocで総量を見ていくしかない.
メモリリークしたときのスクリーンショット
メモリリークしてないときのスクリーンショット [dict description];をコメントアウト
descriptionが怪しいと思うのだが・・・・.
http://code.google.com/p/sonson-code/source/browse/#svn/trunk/mac/dictLeakTest