NSMutableArray 直接分配时的内存管理
我知道当我们将一个对象 obj 添加到 NSMutableArray 中时,它会获取该对象的 co_ownership 。因此,我们可以在将对象 obj 添加到 NSMutableArray 后释放该对象。而当我们释放NSMutableArray的时候,它也会调用其中所有对象的释放。所以不存在内存泄漏,一切都很好。
我的疑问是,如果这样做
NSMutableArray myArray = [[NMutableArray alloc] init];
[myArray addObject:[MyClass alloc] init]];
[myArray release];
会导致我们的程序中出现内存泄漏吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
是的,确实会导致内存泄漏。
令人反感的行是(为了清楚起见,我将其分开):
最后, 保留/释放所有权不平衡并导致泄漏。
一种解决方案是在添加之前进行分配:
Yes indeed, it will cause a memory leak.
The offensing line is (I have splitted it for clarity):
At the end, the retain/release ownership are not balanced and causes the leak.
One solution is to make the allocation before the addition:
将
autorelease
放入您的MyClass
中。这应该可以修复任何内存泄漏Put
autorelease
for yourMyClass
. That should fix any memory leaks