美文网首页
iOS 堆和栈

iOS 堆和栈

作者: 小星星灬 | 来源:发表于2021-07-13 09:26 被阅读0次

堆和栈

全局(静态)区

存放程序静态分配的变量和全局变量。

栈区(stack) 

由编译器自动分配并释放

存放函数的参数值,局部变量等

当一个方法执行时,会建立自己的内存栈,在这方法内定义的变量,局部变量将会逐个放入这块栈内存里,随着方法的执行结束,这个方法的内存栈也将自然销毁。

栈一般来说都是一个先进后出的队列,后进入的数据,会被先释放掉.栈区存放函数内的局部变量,形参和函数返回值.栈区的内存由系统自动管理释放,内存的分配是连续的,且分配的内存地址是向下增长.申明的变量过了作用域范围后内存便会自动释放,不需要开发人员手动管理.

堆区(heap) 

大部分自定义的类都在堆中

比如在ios 中 alloc 都是存放在堆中。

在程序中创建一个对象时,这个对象将被保存到运行时数据区中,以便反复利用(因为对象的创建成本通常较大),这个运行时数据区就是堆内存。

堆内存中的对象不会随方法的结束而销毁,即使方法结束后,这个对象还可能被另一个引用变量所引用(在方法的参数传递时很常见),则这个对象依然不会被销毁。只有当一个对象没有任何引用变量指向它时,系统的垃圾回收器才会在合适的时候回收它。

iOS中数据是存在堆和栈中的,然而我们的内存管理管理的堆上的内存,栈上的内存并不是我们管理

非OC对象(基础数据类型)存储在栈上

OC对象存储在堆上

相关文章

  • iOS中堆和栈的使用

    iOS中堆和栈的使用

  • iOS 堆和栈

    在具体的C/C++编程框架中,这两个概念并不是并行的。栈是机器系统提供的数据结构,而堆则是C/C++函数库提供的 ...

  • iOS 堆和栈

    heap(堆)和stack(栈)是内存管理的两个重要概念。在这里我们指的不是数据结构上面的堆与栈,在这里指的是内存...

  • (IOS)堆和栈

    在操作系统ios中应用程序使用的计算机内存不是统一分配内存空间的。 运行代码使用的内存空间在三个不同的内存区域,分...

  • iOS 堆和栈

    堆和栈 全局(静态)区 存放程序静态分配的变量和全局变量。 栈区(stack) 由编译器自动分配并释放 存放函数的...

  • iOS 栈和堆总结

    转载自 :大神博客iOS程序中的内存分配iOS 堆和栈的区别block与propertyiOS中__block 关...

  • iOS堆、栈和队列

    堆 堆是一种经过排序的树形数据结构,每个节点都有一个值,通常我们所说的堆的数据结构是指二叉树。所以堆在数据结构中通...

  • 浅谈iOS堆和栈

    按管理方式分:1、对于栈来讲,是由系统编译器自动管理,不需要程序员手动管理。2、对于堆来讲,释放工作由程序员手动管...

  • 堆栈 存储空间

    参考文献 iOS--------对堆、栈 存储空间的理解 局部变量、 全局变量、 堆、 堆栈、 静态和全局 iOS...

  • iOS中堆和栈的使用

    转载于:http://www.cocoachina.com/ios/20180619/23845.html 堆和栈...

网友评论

      本文标题:iOS 堆和栈

      本文链接:https://www.haomeiwen.com/subject/ripjpltx.html