这是我参与「第四届青训营 」笔记创作活动的第5天,今天学习了Objectice-C语言的内存管理相关内容。
内存管理这一块,初始感觉很深奥,理解起来略有些困难,而且相关的生词也不少,所以学起来比较吃力,但是认真看完之后,最重要的内容反而占比很小,个人认为需要精读多理解记忆才能学好。
malloc()函数,用于给指针指向的变量分配内存空间,而此指针指向的内存空间会被存储到堆中,不会被系统回收或者是随意使用。
free()函数,用于释放指定指针所指向的内存区域,
在C++语言中,与objective-C语言很像,malloc和free只能动态地分配或者是释放内存空间,如果对内存的管理失败会自动返回0而不是抛出异常
shared_ptr 分享指针:可以复制赋值操作
reference counting 引用计数,可以记录当前的内存资源到底有多少指针在引用,或者说有多少指针可以访问这个变量。 每次新增一个可以访问这个变量的引用或者说有指针指向它,计数器就会加一,反之计数器减一,当计数器=0时销毁这个对象或者这个变量。
IOS内存管理的核心是强引用计数模式,目前我们仅需要考虑ARC automatic reference counting 也就是自动引用计数模式。
只要是继承自NSObject对象,就需要进行内存管理 我们每次继承一个NSObject对象,都会自动分配在堆里面。 如果程序占用了太多内存,就会被强制关闭,或者是指针被提前释放了就会导致野指针,这两种行为都会造成程序的crash也就是堵塞。