在OC中当使用 new alloc 和copy创建一个对象时 该对象的计数器值为1 ,当不再使用该对象时要对该对象发出一条release 或autorelease这样该对象在寿命结束时被销毁。2.当你通过任何其他方法获得一个对象时,则假设该对象的保留计数器值为1,而且已经被设置为自动释放,你不需要执行任何操作来确保该对象被清理 。如果你打算在一定时间内拥有该对象,则需保留它并确保在操作完成时释放它。3.如果你保留了某个对象,逆需要(最终)释放或自动释放该对象,必须保持retain方法和release方法的使用次数相等.
在C++中,内存分成5个区,分别是堆、栈、自由存储区、全局/静态区和常量存储区。栈:存放函数参数以及局部变量,在出作用域时,将自动被释放.栈内存分配运算内置于处理器的指令集中,效率很高,但分配的内存容量有限. 堆:new分配的内存块(包括数组,类实例等),需delete手动释放.如果未释放,在整个程序结束后,OS会帮你回收掉. 堆与栈的主要区别管理方式不同: 栈是编译器自动管理的,堆需手动释放malloc/free 和new/delete有了malloc/free为何还需要new/delete呢? malloc/free是标准库函数,而new/delete是运算符,它们都可用于申请/释放动态内存.但对于非基本数据类型(比如类对象)而言, malloc/free无法自动执行对象的构造/析构函数.而new/delete却可以.