内存管理

在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却可以.

原文地址:https://www.cnblogs.com/tianlianghong/p/5232569.html