繁体   English   中英

这是内存泄漏吗?

[英]Is this a memory leak?

我有以下2个代码片段。 假设我有一个Parent类,而且我有Parent.h类

@property (retain) NSMutableArray *childrens;

我正确地在.m文件中合成它。 在Parent.m文件中假设

- (无效)dealloc

{

 [childrens release];
 [super dealloc];

}

在另一个课堂上,我这样宣布。

1。

Parent *p = [[Parent alloc] init];
p.chidlrens = [[NSMutableArray alloc] init];
// do some other stuff

2。

Parent *p = [[Parent alloc] init];
NSMutableArray *childArray = [[NSMutableArray alloc] init];
p.childrens = childArray;
[childArray release];

从上述2种方法中,方法1中是否存在泄漏?

是的,方法1中存在泄漏。您分配NSMutableArray但不释放它。

虽然没有回答你的问题,但我建议使用Parent init并在其init方法中分配数组,因此你的代码在别处不必担心检查它是否已经创建并执行它。 那么你不需要使用Parent担心Parent的内存管理的类 - Parent可以这样做。

一般规则是释放你做alloc,init的任何东西。

但要进行构建+分析以获得一些“潜在的”泄漏。 如果你想100%确定,尽管泄漏运行它

要在没有人帮助的情况下检查泄漏的位置。 例如,使用任何插件。 我使用deleaker并确切知道内存泄漏的位置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM