【发布时间】:2011-03-07 23:22:17
【问题描述】:
在 Objective-C 中使用 alloc init 创建数组时,当对象被添加到数组中时,内存是如何管理的?
我想知道当您创建数组和 malloc 时这与 C 有何关系,分配的大小需要是预期数组的大小,或者需要重新分配数组内存。
这些是如何关联的,或者什么是理解 C 代码工作方式的好方法。
添加对象时是否会在内部处理 Objective-c 数组内存,或者这是如何工作的?
【问题讨论】:
-
在 NSArray 中究竟如何处理内存是一个实现细节——也就是说,没有一个正确的答案。它可能因编译器、版本、运行时库、操作系统等而异。也就是说,很可能通过 malloc()。
-
关于您可以几乎肯定地说的唯一一件事是 NSArray 将使用比 C 数组更多的内存(您为这些功能付费),但添加项目的增量成本可能更便宜NSArray 作为整个数组不会被重新分配,这对于 C 数组来说是可能的(但不确定)。
-
@CRD:NSArray 是不可变的。您不能就地添加项目。
-
@Seva:是的,我的意思是
NSMutableArray,当然,关于向数组添加项目的问题。
标签: objective-c c arrays malloc