cta*_*art 3 methods memory-leaks objective-c
我正在研究Stephen Kochan在Objective-C中的编程(这是为了承认我是一个完全的初学者).
我目前的程序是分数计算器.我有加,减,乘和除法.乐器告诉我他们都在泄漏(只是一点点,但它是一个很小的程序.)
这是减法方法的定义(其余的遵循非常相似的形式):
-(Fraction *) subtract: (Fraction *) f;
{
Fraction *result = [[Fraction alloc] init];
int resultNum, resultDenom;
resultNum = numerator * f.denominator - f.numerator * denominator;
resultDenom = denominator * f.denominator;
[result setTo: resultNum over: resultDenom];
return result;
[result release];
}
Run Code Online (Sandbox Code Playgroud)
想堵塞泄漏?提前谢谢.
此外,我四处寻找网站上的另一个解释,但遗憾的是,我认为没有其他人问过任何这么基本的问题.
小智 8
问题在于:
return result;
[result release];
Run Code Online (Sandbox Code Playgroud)
-release永远不会发送,result因为之后的任何语句return都没有执行.这些语句称为死代码.
你应该自动释放你的对象,例如:
return [result autorelease];
Run Code Online (Sandbox Code Playgroud)
请注意,您应该使用-autorelease而不是-release因为-release会导致立即释放result,这不是您想要的.另一方面,自动释放的对象在将来的某个时刻被释放 - 特别是在相应的自动释放池被耗尽时.
| 归档时间: |
|
| 查看次数: |
200 次 |
| 最近记录: |