引用百度百科图

栈(stack)又名堆栈。

栈定义:栈是限定仅在表头进行插入和删除操作的线性表(有序)。(又称:后进先出表)

(动态)数据展示存储的地方。(举例:升降电梯)特点:先进后出(FILO—First-In/Last-Out)

位置:处于内存条的最高地址。栈顶即最低地址,允许进行插入和删除操作的一端称为(最低地址)栈顶(top),另一端为(最高地址)栈底(bottom);

栈底固定,而栈顶浮动。注意静态变量是不入栈。

堆(heap)在这里的定义:堆是紧随在栈表头后进行插入和删除操作的线性表。又称:先进先出表)

(包含了大量无序的活动对象,需要通过指针来保存这些对象在堆中的地址。)

堆,(举例:银行排队)特点:队列优先,先进先出(FIFO—first in first out)

位置:处于内存条的最高地址栈的后面。

堆和栈的区别(引用南霸天mxw  中学数学教师 白银市第一中学教师2015-06-04 15:10    由科学教育分类达人 程明认证)

  一、堆栈空间分配区别:
  1、栈(操作系统):由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈;
  2、堆(操作系统): 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表。
  二、堆栈缓存方式区别:
  1、栈使用的是一级缓存, 他们通常都是被调用时处于存储空间中,调用完毕立即释放;
  2、堆是存放在二级缓存中,生命周期由虚拟机的垃圾回收算法来决定(并不是一旦成为孤儿对象就能被回收)。所以调用这些对象的速度要相对来得低一些。
  三、堆栈数据结构区别:
  堆(数据结构):堆可以被看成是一棵树,如:堆排序;
  栈(数据结构):一种先进后出的数据结构。

正文:

一、基本原理

1.内存

管理范围:任何继承NSObject的对象,对其他的基本数据类型无效。

2.对象的基本结构

对象内部,有4个字节的存储空间来存储引用计数器。

3.引用计数器的作用

判断对象回收唯一依据是计数器是否为0,若为0则回收。

4.操作

发送消息,相应的计数器操作。

Retain:计数器+1,返回本身

Release:计数器-1(并不代表释放对象)

retainCount:获得当前计数器值

5.对象的销毁

当计数器为0,它被销毁,内存回收。

当对象被销毁,系统会发送一条dealloc,重写dealloc方法,释放资源。重写dealloc必须用[super dealloc],放在代码块最后调用(不能直接调用dealloc)。

对象被回收,占据的存储空间就不可用,坚持使用程序崩溃(野指针错误)。

 

十.oc内存管理的更多相关文章

  1. OC内存管理-OC笔记

    内存管理细节:http://blog.sina.com.cn/s/blog_814ecfa90102vus2.html 学习目标 1.[理解]内存管理 2.[掌握]第一个MRC程序 3.[掌握]内存管 ...

  2. OC 内存管理机制总结

    OC 内存管理机制总结 一:OC内存管理机制目前分为两块,其一自动内存管理机制,其二手动内存管理机制: 1.首先我们从自动内存管理机制讲起: 1)什么是自动内存管理机制,自动内存管理机制就是程序中所创 ...

  3. OC内存管理基础

    OC 内存管理基础 一. retain和release基本使用 使用注意: 1.你想使用(占用)某个对象,就应该让对象的计数器+1(让对象做一次retain操作) 2.你不想再使用(占用)某个对象,就 ...

  4. QF——OC内存管理详解

    堆的内存管理: 我们所说的内存管理,其实就是堆的内存管理.因为栈的内存会自动回收,堆的内存需要我们手动回收. 栈中一般存储的是基本数据类型变量和指向对象的指针(对象的引用),而真实的对象存储在堆中.因 ...

  5. OC内存管理-黄金法则

    1.内存管理-黄金法则 The basic rule to apply is everything that increases the reference counter with alloc, [ ...

  6. OC内存管理总结,清晰明了!

    <span style="font-size:18px;">OC内存管理 一.基本原理 (一)为什么要进行内存管理. 由于移动设备的内存极其有限.所以每一个APP所占的 ...

  7. 31 (OC)* 内存管理

    31 (OC)  内存管理 一:内存管理黄金法则. 如果对一个对象使用了alloc.[Mutable]copy,retain,那么你必须使用相应的realease或者autorelease 二:内存管 ...

  8. iOS学习17之OC内存管理

    1.内存管理的方式 1> iOS应用程序出现Crash(闪退),90%的原因是因为内存问题. 2> 内存问题 野指针异常:访问没有所有权的内存,如果想要安全的访问,必须确保空间还在 内存泄 ...

  9. 【0 - 1】OC内存管理

    一.内存管理概述 垃圾回收机制(GC):由系统管理内存,程序员不需要管理. OC中的垃圾回收:在OC2.0版加入垃圾回收. OC与iOS:OC有垃圾回收机制,但是iOS屏蔽了这个功能.原因:iOS运行 ...

随机推荐

  1. json工具包比较 fastjson jackson gson

    对json进行json-object进行相互转化时,笔者接触到三种工具jar,现对其进行比较. fastjson:速度最快,阿里巴巴开源. jackson:springMvc 默认使用. gson:谷 ...

  2. 上海敏行医学招聘物理仿真,3D图形人才

    工作职能: 1.开发医学虚拟手术中的柔体仿真引擎/图形效果 2.柔体仿真引擎.和引擎开发主工程师一起完善和改进仿真引擎的开发工作. 3.3D图形效果的改进. 职位要求: 1.本科以上学历,1年以上c+ ...

  3. U盘快捷方式中毒处理办法

    这是网上某位大神的,对于我这个U盘总中毒的人真的很好用,太开心啦啦 http://blog.csdn.net/jzwong/article/details/51002568

  4. swiper

    <!DOCTYPE html><html lang="en"><head> <meta charset="utf-8" ...

  5. Python3.x和Python2.x的区别

    1.性能 Py3.0运行 pystone benchmark的速度比Py2.5慢30%.Guido认为Py3.0有极大的优化空间,在字符串和整形操作上可 以取得很好的优化结果. Py3.1性能比Py2 ...

  6. The C Programming Language Exercise

    1-9 : Write a program to copy its input to its output, replacing each string of one or more blanks b ...

  7. appstore不能登陆

    Happened same with me. This is happening because the App Store is looking for a working connection o ...

  8. 9. js实现java方法:HtmlUtils.htmlEscape()

    function htmlEscape(str) { return String(str) .replace(/&/g, '&') .replace(/"/g, '" ...

  9. 解决vs2008无法切换设计视图的问题

    在 Visual Studio 2008的编辑一个web页面的时候,“源视图”(Source View), 你可以自定义设计视图(Design View)为默认视图. 方法如下: 菜单:工具+选项+h ...

  10. Kafka报错-as it has seen zxid 0x83808 our last zxid is 0x0 client must try another server

    as it has seen zxid 0x83808 our last zxid is 0x0 client must try another server 停止zookeeper,删除datadi ...