2011-03-01 112 views
0

东西我一直在想了一会儿。我知道为了释放内存,必须释放对象(如NSMutableArray),但是原始数据类型(如int)不会。我的问题是,一个整数占据的空间在什么时候变得自由了?原始数据类型Vs的对象在目标C

例如,一类“myClass的”具有IVAR“INT一个”

“一”保持值某个整数值。

当“myClass”被释放时,内存中保存“a”值的空间是否立即变为空闲状态?

在此先感谢。

回答

3

对于类ivars,释放对象实例时解除分配内存 - 在最后一次[释放]调用时释放内存。对于本地int(和其他原始)变量,函数返回时。对于全局变量和静态变量,当进程退出时。

另外,你可以用malloc()动态分配int。然后当你打电话给free()的时候它就被释放了。

1

“a”被包括在“MyClass的”分配的内存。换句话说,当myClass被释放时,“a”与它一起消失。

0

一个Objective C对象类似于一个指向malloc'd C结构的指针(包含声明的和一些隐藏的实例变量)。当一个对象被释放时,整个C结构内存块,包括所有内部ivar存储,都是免费的(以及其他需要的dealloc内务处理)。