我曾经想过一段时间。我知道为了释放内存,必须释放对象(如NSMutableArray),但原始数据类型(如int)不会。我的问题是,int占用的内存空间在什么时候变得空闲?
例如,类“myClass”具有iVar“int a”
“a”将值保存为某个整数值。
当“myClass”被解除分配时,内存中持有“a”值的空间是否会立即自由发送?
提前致谢。
答案 0 :(得分:3)
对于类ivars,在释放对象实例时 - 在最后一次[release]调用时释放内存。对于本地int(和其他原始)变量,当函数返回时。对于全局变量和静态变量,当进程退出时。
此外,您可以使用malloc()动态分配int。然后当你调用free()时它被释放。
答案 1 :(得分:1)
“a”包含在“myClass”中分配的内存中。换句话说,当myClass被取消分配时,“a”随之而来。
答案 2 :(得分:0)
Objective C对象类似于指向malloc'd C结构的指针(包含声明的和一些隐藏的实例变量)。释放对象时,整个C结构内存块(包括所有内部ivar存储)都是免费的(以及所需的任何其他dealloc内务处理)。