IOS-内存分区

内存有五大区域

从高地址到低地址分别为:栈、堆、BBS段、数据段、代码段

提示:栈和堆是运行时分配,BBS段、数据段、代码段是编译器分配

BBS段:通常是指用来存放程序中未初始化的全局变量和静态变量

数据段:通常是指用来存放程序中已经初始化的全局变量和静态变量、字符串常量等

代码段:通常是指用来存放程序执行代码的一块内存区域

堆:是用于存放进程运行中被动态分配的内存段(调用malloc函数,新分配的内存动态添加到堆上;调用free函数,释放内存从堆中删除)

栈:又称堆栈,是用户存放程序临时创建的局部变量

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-08 07:59:36

IOS-内存分区的相关文章

iOS 中内存分区

1  关于RAM ROM 我们知道,内存为RAM类型不具备掉电存储能力(即一掉电数据全没了),所以app程序一般存放于内存卡(Flash)或ROM中.RAM的访问速度要远高内存卡(Flash)或ROM. 2  当启动一个app 为了加快程序执行速度,系统会把开启的那个app程序从Flash或ROM里面拷贝到内存(RAM),然后从内存里面执行代码.另一个原因是CPU不能直接从内存卡里面读取指令(需要Flash驱动等等). 3  内存分区:可以分为5个区 1).栈区(stack)— 这个一般由编译器

IOS内存管理

原文链接:http://blog.csdn.net/weiqubo/article/details/7376189 1.  内总管理原则(引用计数)    IOS的对象都继承于NSObject,   该对象有一个方法:retainCount ,内存引用计数. 引用计数在很多技术都用到: window下的COM组件,多线程的信号量,读写锁,思想都一样.       (一般情况下: 后面会讨论例外情况)    alloc      对象分配后引用计数为1    retain    对象的引用计数+1

iOS内存管理(一)

最近有时间,正好把iOS相关的基础知识好好的梳理了一下,记录一下内存相关方面的知识. 在理解内存管理之前我觉得先对堆区和栈区有一定的了解是非常有必要的. 栈区:就是由编译器自动管理内存分配,释放过程的区域,存放函数的参数值,局部变量等.栈是内存中一块连续的区域,它的大小是确定的. 堆区:需要我们来动态的分配,释放,也就是我们内存管理的主角. 我们通过一个简单的例子来看看. NSString *string = [NSString alloc] init]; 我们声明了一个NSString类型的变

IOS 内存斗争小史之 对象、指针、内存的基本理解

1.指针和对象,都是内存块.一个大,一个小.一个在栈中,一个在堆中. 2.iOS中,我们可以生命一个指针,也可以通过alloc获取一块内存. 3.我们可以直接消灭掉一个指针,将其置为nil.但是我们没办法直接消灭一块对象内存.对于对象内存,我们永远只能依靠系统去回收.而什么时候回收,就需要使用苹果为我们提供了"对象所有权"机制.当一个对象没有被任何指针拥有时,这块对象内存将被系统回收.如果,这个对象是你自定义的,需要自己实现dealloc方法.告诉系统你想怎么回收. 4.将一个指针置为

iOS - 内存管理之超级大坑内存泄漏QAQ

??前段时间被分配到查内存泄漏这种大坑,不胜惶恐!!!结果还真的跳进去了,爬了好长一段时间都没爬出来QAQ.每天开着Leaks各种捣鼓爱啪啪,然后看到一大波"神奇"的内存泄露信息,头都大了. ??不过这虽然是个大坑,不过趁着这次机会可以把内存管理知识好好实践了一遍.或许现在大多数的新项目都是ARC的了,然而在一些实际的大项目中,会重用很多诺干年前(其实也就几年前)的代码,QAQ,而这些代码会有很多实现采用的是MRC的方式,所以项目中就经常可以见到混合着ARC和MRC这两种不同内存管理模

iOS内存分配五大区:

iOS内存分配五大区: 栈区,堆区,静态区(全局区),常量区,代码区 动态数据区一般就是”堆栈”,栈是线性结构,堆是链式结构. 本地变量在堆栈中.通过堆栈的基地址和偏移量来访问本地变量 动态内存分配有系统根据程序需要即时分配,且分配的大小就是程序要求的大小. 全局变量(一般用static修饰的变量)和静态变量分配在静态区(需要预先分配存储空间) 静态内存分配:分配固定大小的内存分配方法,大多情况下会浪费大量的内存空间,少数情况下,当定义的数组不够大时,会引起越界. 局部变量采用栈的方式存放

iOS内存管理和malloc源码解读

0. iOS内存基本原理 在接触iOS开发的时候,我们都知道“引用计数”的概念,也知道ARC和MRR,但其实这仅仅是对堆内存上对象的内存管理.用WWDC某Session里的话说,这其实只是内存管理的冰山一角. 在内存管理方面,其实iOS和其它操作系统总体上来说是大同小异的,大的框架原理基本相似,小的细节有所创新和不同. 和其它操作系统上运行的进程类似,iOS App进程的地址空间也分为代码区.数据区.栈区和堆区等.进程开始时,会把mach-o文件中的各部分,按需加载到内存当中. 而对于一般的iP

谈谈ios内存管理--持续更新

本文主要谈谈ios内存管理的发展脉络,不足之处,还请指教,相互学习交流.做ios开发,永远无法避开内存管理,无论我们是否有意识去考虑这个事情,但是只要我们写了OC程序,那么就与内存管理有关. 一.内存管理是做什么的? 二.内存管理方式一:MRC (一)引用计数器 (二)原则 (三)alloc.new.copy.mutableCopy.retain.release.dealloc alloc内部实现 引用计数表 (四)autorelease 三.内存管理方式二:ARC (一)__strong (二

IOS 内存管理

一.前言 对于大多数从C++或者JAVA转过来学习Object-C(以下简称OC)的人来说,OC这门语言看起来非常奇怪,用起来也有点麻烦. OC没有像JAVA一样的垃圾回收机制,也就是说,OC编程需要程序员手动去管理内存.这就是为什么它烦的原因,苹果却一直推崇开发者在有限硬件资源内写出最优化的代码,使用CPU最少,占用内存最小. 二.基本原理 对象的创建: OC在创建对象时,不会直接返回该对象,而是返回一个指向对象的指针,因此出来基本类型以外,我们在OC中基本上都在使用指针. ClassA  *

iOS 内存斗争小史之 NavigationController

1.怎样写一个不泄漏的NavigationController页面跳转程序? 非arc模式下,假设有A.B两个viewController,从A推到B,怎样写内存才能不泄漏? A.m -(IBAction)btnGoToViewControllerB:(id)sender { ViewControllerB *aController = [[ViewControllerB alloc]init]; [self pushViewController:aController animated:YES