当前位置:网站首页>【内存管理概述 Objective-C语言】
【内存管理概述 Objective-C语言】
2022-08-10 01:01:00 【清风清晨】
前言
1.内存管理:
内存的作用:存储数据
内存管理的两个方面:
1)如何将数据存储到内存中
声明1个变量,然后将数据存储进去
2)当数据不再使用的时候,占用的内存空间如何被释放
一、内存中的五大区域
1)栈:局部变量,什么时候被释放呢?
if(1)
{
int num = 12;
}
大括号结束时,被释放。
局部变量,当局部变量的作用域被执行完毕之后,这个局部变量就会被系统立即回收。
num++;
这儿能不能num++?不能,因为执行到这句话时候,num已经不见了啊,已经从内存中消失了啊
2)堆:OC对象,malloc、realloc、calloc申请的空间,动态申请的空间。使用C函数申请的动态空间
3)BSS段:未初始化的全局变量和静态变量,一旦初始化就回收,并转存到数据段中
4)数据段(常量区):已经初始化的全局变量和静态变量,直到程序结束的时候才会被回收。
5)代码段:代码,程序结束的时候,系统会自动回收存储在代码段当中的数据。
6)栈 、 BSS段 、 数据段 、 代码段,存储在它们中的数据的回收,是由系统自动完成的。不需要我们干预。
二、堆里面的数据什么时候释放
1.例如:
有一个Person类,如下语句:
Person *p1 = [[Person alloc] init];
这个对象创建在哪儿的,堆里面的。
这句话用到了内存中的几个空间?
栈:
堆:
代码段:
这个p1是栈里面的数据,大括号执行完就回收。main函数执行完,p1就不见了,那这个对象呢?
1)这个对象需要被回收吗?需要
2)分配在堆区的这个OC对象,是肯定需要被回收的
iPhone:内存机制
App占用的内存达到了40M,系统就会给你发一个警告
占到45M,再给你发一个警告
占到120M,直接把你的程序给你退掉
2.堆中的OC对象,怎么被回收呢?
1)它会不会自动回收?不会
存储在堆区的OC对象,系统不会自动回收。
直到程序结束的时候,才会被回收。
2)内存管理的范围:
只需要管理存储在堆中的OC对象的回收,其他区域中的数据的回收是系统自动管理的。
边栏推荐
猜你喜欢

对修饰器的实验支持功能在将来的版本中可能更改。在 “tsconfig“ 或 “jsconfig“ 中设置 “experimentalDecorators“ 选项以删除此警告

MySQL最大连接数限制如何修改

以太网PHY芯片LAN8720A芯片研究

GB28181 sip和RTSP(Real-Time Streaming Protocol)实时流控制协议

嵌入式Qt-实现两个窗口的切换

unity编辑器扩展界面使用 List

HCIP——综合交换实验

type-C 边充电边听歌(OTG) PD芯片方案,LDR6028 PD充电加OTG方案

Xi'an biotin-tetrapolyethylene glycol-amide-4phenol light yellow semi-solid

y92.第六章 微服务、服务网格及Envoy实战 -- Envoy基础(三)
随机推荐
高校就业管理系统设计与实现
【无标题】
Shader Graph learns various special effects cases
跳房子游戏
不是吧,连公司里的卷王写代码都复制粘贴,这合理?
宽带由20M换为100M
C language pointer practice questions
Unity reports Unsafe code may only appear if compiling with /unsafe. Enable “Allow ‘unsafe’ code” in Pla
sql实战积累
Aptos 深度解读:机遇、挑战与风险
CMake 编译运行dpdk项目程序
Experimental support for decorators may change in future releases.Set the "experimentalDecorators" option in "tsconfig" or "jsconfig" to remove this warning
type-C 边充电边听歌(OTG) PD芯片方案,LDR6028 PD充电加OTG方案
Solidity最强对手:MOVE语言及新公链崛起
Initial attempt at UI traversal
C# 四舍五入 MidpointRounding.AwayFromZero
分析 20 个 veToken 生态系统协议 这种代币模型为何受欢迎?
头脑风暴:单词拆分
FILE结构体在stdio.h头文件源码里的详细代码
改变社交与工作状态的即时通讯是什么呢?