1
我使用這個功能來抽取子,它的工作原理,但有兩個泄漏:SubstringToIndex內存泄露
-(NSString*)EstraiP:(NSString*)str ini:(NSString*)ini fin:(NSString*)fin occ:(int)occ{
NSRange rstr1;
for(int i=0; i < occ; i++){
rstr1=[str rangeOfString:fin];
str=[str substringFromIndex:rstr1.location+rstr1.length];
}
NSString* FinalStr;
rstr1=[str rangeOfString:ini];
if(occ==0){
if(rstr1.length==0)
return @"Non Trovato inizio";
FinalStr=[str substringFromIndex:(rstr1.location + rstr1.length)] ;
}else{
if(rstr1.length==0)
return @"Non Trovato inizio";
FinalStr=[str substringFromIndex:rstr1.location+rstr1.length] ;
}
NSRange rstr2=[FinalStr rangeOfString:fin];
if(rstr2.length==0)
return @"Non Trovata fine";
FinalStr=[FinalStr substringToIndex:rstr2.location];
return FinalStr;
}
這對泄密行一些內存:
str=[str substringFromIndex:rstr1.location+rstr1.length];
FinalStr=[FinalStr substringToIndex:rstr2.location];
我環顧四周,但沒有發現任何東西.... 沒有分配或保留,所以我不應該釋放他們......可能是什麼問題? 我希望我自己解釋一下
謝謝!
什麼告訴你這裏有泄漏? – 2010-07-02 17:08:07
如果您想確保子字符串不存在,請使用rstr1.location == NSNotFound'。 – kennytm 2010-07-02 18:59:45